gpt4 book ai didi

python - Tkinter 在 Frames 中添加菜单栏

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:45 25 4
gpt4 key购买 nike

我使用的是此处答案中发布的代码 Switch between two frames in tkinter通过@Bryan Oakley。现在我想添加一些菜单栏。在 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)`

但正如我所说,它将菜单附加到主窗口。但我想要不同页面的不同菜单。

最佳答案

最简单的解决方案是为每个页面添加一个方法,为该页面创建菜单栏,然后​​在切换框架时切换到该菜单。

这可能需要您为页面之间通用的所有菜单项编写一堆重复代码(例如:编辑->剪切、编辑-复制、编辑-粘贴等),但至少显示了一般技术。

例如,一个页面可能会定义这样一个方法:

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)

关于python - Tkinter 在 Frames 中添加菜单栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37621071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com