我一直在爲此苦苦掙扎了一段時間。我想我錯過了一些簡單的信息,我希望你們能幫我解決這個問題。在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()