我是 Tkinter 和 python 的新手。我正在關注
我正在尋找一種在不相互重疊的情況下切換顏色幀的方法。而且,當我回到起始頁時,所有顏色框架都應該被銷毀/隱藏。請幫我。太感謝了。
uj5u.com熱心網友回復:
對于里面的幀切換PageOne,需要先隱藏當前幀,再顯示請求的幀。另外最好在 中創建三個顏色框__init__()并在相應的函式中顯示:
class PageOne(tk.Frame):
def __init__(self, parent, controller):
...
# create the three color frames with initially hidden
self.blueFrame = tk.Frame(self, relief=RIDGE, bd=1, bg="blue")
self.redFrame = tk.Frame(self, relief=RIDGE, bd=1, bg="red")
self.yellowFrame = tk.Frame(self, relief=RIDGE, bd=1, bg="yellow")
def blue(self):
self.hide_all_frames()
self.blueFrame.place(x=160, y=0, width=1190, height=720)
def red(self):
self.hide_all_frames()
self.redFrame.place(x=200, y=0, width=1150, height=720)
def yellow(self):
self.hide_all_frames()
self.yellowFrame.place(x=240, y=0, width=1110, height=720)
def hide_all_frames(self, event=None):
self.redFrame.place_forget()
self.blueFrame.place_forget()
self.yellowFrame.place_forget()
如果你想在切換幀后隱藏所有顏色幀,即PageOne-> MainPage-> ,你可以在它引發時PageOne通知using 虛擬事件。PageOne然后PageOne在接收到此類虛擬事件時隱藏所有顏色幀:
class SampleApp(tk.Tk):
...
def show_frame(self, page_name):
'''Show a frame for the given page name'''
frame = self.frames[page_name]
frame.tkraise()
# notify the raised frame via virtual event
frame.event_generate('<<Raised>>')
...
class PageOne(tk.Frame):
def __init__(self, parent, controller):
...
self.blueFrame = tk.Frame(self, relief=RIDGE, bd=1, bg="blue")
self.redFrame = tk.Frame(self, relief=RIDGE, bd=1, bg="red")
self.yellowFrame = tk.Frame(self, relief=RIDGE, bd=1, bg="yellow")
self.bind('<<Raised>>', self.hide_all_frames)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/441041.html
