我正在使用此处答案中发布的代码在 tkinter 中的两个框架之间切换 https://stackoverflow.com/questions/7546050/switch-between-two-frames-in-tkinter作者:@Bryan Oakley。现在我想添加一些菜单栏。在 Pageone 中我想添加菜单File
and Help
在第二页中我想添加菜单Data
and plot
但我无法完成它。
我可以将菜单添加到主窗口。但随后它可用于所有页面,并且当我更改页面时它不会消失。我不想要这样。我想添加特定于该页面的菜单栏。我怎样才能做到这一点
EDIT
实际上我想做的是,我正在制作一个 GUI,你可以在其中进行数学积分和矩阵计算等。因此,在打开 GUI 时,将会出现带有积分、矩阵等按钮的窗口。单击这些按钮将打开一个窗口,您可以在其中进行相应的计算。我用的是Toplevel()
命令打开一个新窗口,我只是隐藏前一个窗口。但我喜欢 Bryan 在该链接中发布的 GUI 代码,因此我询问了如何向各个页面添加菜单。
在布莱恩的代码中我刚刚添加了这些行
`类 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)