[英]Tkinter add menu bar in Frames
我正在使用答案中發布的代碼,這里是@Bryan Oakley 在 tkinter中的兩個幀之間切換 。 現在,我想添加一些菜單欄。 在Pageone中,我想添加菜單File
和Help
,在Pagetwo中,我想添加菜單Data
和plot
但是我無法完成它。
我可以將菜單添加到主窗口。 但隨后它可用於所有頁面,並且在我更改頁面時不會消失。 我不要 我想添加特定於該頁面的菜單欄。 我怎樣才能做到這一點
編輯
實際上,我想做的是,我正在制作一個GUI,您可以在其中進行數學積分和矩陣計算等。 因此,在打開GUI時,將出現帶有用於積分,矩陣等按鈕的窗口。單擊這些按鈕將打開一個窗口,您可以在其中進行相應的計算。 我使用Toplevel()
命令執行此操作,該命令會打開一個新窗口,而我只隱藏了前一個窗口。 但是我喜歡Bryan在該鏈接中發布的GUI代碼,所以我問有關向各個頁面添加菜單的問題。
在Bryan的代碼中,我只添加了以下幾行`SampleApp(tk.Tk)類:
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
menu=tk.Menu(self)
self.config(menu=menu)
subMenu=tk.Menu(menu)
menu.add_cascade(label="File",menu=subMenu)`
但是正如我所說,它將菜單附加到主窗口。 但是我想要不同頁面的菜單。
最簡單的解決方案是向每個頁面添加一種為該頁面創建菜單欄的方法,然后在切換框架時切換到該菜單。
這可能會要求您為頁面之間共有的所有菜單項使用一堆重復的代碼(例如:edit-> cut,edit-copy,edit-paste等),但至少要顯示常規技術。
例如,頁面可能會定義如下方法:
class PageOne(tk.Frame):
...
def menubar(self, root):
menubar = tk.Menu(root)
pageMenu = tk.Menu(menubar)
pageMenu.add_command(label="PageOne")
menubar.add_cascade(label="PageOne", menu=pageMenu)
return menubar
然后,當您切換幀時,您將調用此方法,如下所示:
def SampeApp(tk.Tk):
...
def show_frame(self, page_name):
'''Show a frame for the given page name'''
frame = self.frames[page_name]
frame.tkraise()
menubar = frame.menubar(self)
self.configure(menu=menubar)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.