在我的tkinter项目中,我的代码中有两个类,即input和search。这两个类各自都很好地工作,并且在它们下面包含了一堆子页,我可以通过这些子页导航。但是,我无法在这两个类之间切换。由于我的项目相当大,所以我提供了下面的通用代码。
InputOrSearch = False
class Input: # class 1
[...]
class Search: # class 2
def __init__(self, screen):
self.screen = screen
def CheckPage(self, page, optmenu=None):
if page == 1:
self.Clear()
self.search_menu()
def Clear(self):
for widget in self.screen.winfo_children():
widget.destroy()
[...]
inputscreen = Input(gui)
searchscreen = Search(gui)
def inputorsearch():
if not InputOrSearch:
inputscreen.CheckPage(1)
else:
searchscreen.CheckPage(1)
while True:
inputorsearch()
gui.mainloop()这就是我所使用的方法,虽然这正确地导致了Input,但由于某种原因,它似乎并不适用于Search。
发布于 2020-08-07 21:51:10
最简单的解决方案是使每个类都成为Frame的子类。然后,您可以轻松地在它们之间切换,方法是销毁一个实例并创建另一个实例,或者在启动时创建它们,然后隐藏其中一个,然后显示另一个实例。
import tkinter as tk
class Input(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
label = tk.Label(self, text="I am Input.")
label.pack(side="top", fill="both", expand=True)
class Search(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
label = tk.Label(self, text="I am Search.")
label.pack(side="top", fill="both", expand=True)
def inputorsearch():
if not InputOrSearch:
searchscreen.pack_forget()
inputscreen.pack(fill="both", expand=True)
else:
inputscreen.pack_forget()
searchscreen.pack(fill="both", expand=True)
gui = tk.Tk()
inputscreen = Input(gui)
searchscreen = Search(gui)
InputOrSearch = True
inputorsearch()
gui.mainloop()https://stackoverflow.com/questions/63309243
复制相似问题