我一直在为此苦苦挣扎了一段时间。我想我错过了一些简单的信息,我希望你们能帮我解决这个问题。在tkinter中一次只显示一帧
我想让tkinter显示不同的框架,我最终将小部件放在里面。下面是我所做的:
我做了应该初始化窗口,使所有的不同的帧的程序将运行的类。
我为每一帧制作了一个单独的类(我打算在程序完成时让变量与不同的类关联),并且分配了一个变量来启动该类并使其运行init函数
我通过告诉它tkraise()我想要显示的框架结束了StartUp类,这就是事情停止正常工作的地方。
我每一帧设置为不同的颜色,所以当你运行这个程序,你会发现它们分割屏幕空间了,而不是一个被上升到顶部。我错过了什么?最后一点,我故意试图在我的程序中拼出所有东西,我更好地学习这种方式。我离开了它,所以我必须在每个tkinter命令前输入tkinter.blah-blah-blah,以便我可以轻松识别它们,并且我决定不让我的类继承Frame或Tk或任何其他类。我试图理解我在做什么。
import tkinter
class StartUp:
def __init__(self):
self.root = tkinter.Tk()
self.root.geometry('300x300')
self.container = tkinter.Frame(master=self.root, bg='blue')
self.container.pack(side='top', fill='both', expand=True)
self.page1 = Page1(self)
self.page2 = Page2(self)
self.page1.main_frame.tkraise()
class Page1():
def __init__(self, parent):
self.main_frame = tkinter.Frame(master=parent.container, bg='green')
self.main_frame.pack(side='top', fill='both', expand=True)
class Page2():
def __init__(self, parent):
self.main_frame = tkinter.Frame(master=parent.container, bg='yellow')
self.main_frame.pack(side='top', fill='both', expand=True)
boot_up = StartUp()
boot_up.root.mainloop()