簡體   English   中英

Tkinter在框架中添加菜單欄

[英]Tkinter add menu bar in Frames

我正在使用答案中發布的代碼,這里是@Bryan Oakley tkinter中的兩個幀之間切換 現在,我想添加一些菜單欄。 在Pageone中,我想添加菜單FileHelp ,在Pagetwo中,我想添加菜單Dataplot但是我無法完成它。

我可以將菜單添加到主窗口。 但隨后它可用於所有頁面,並且在我更改頁面時不會消失。 我不要 我想添加特定於該頁面的菜單欄。 我怎樣才能做到這一點

編輯

實際上,我想做的是,我正在制作一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM