根据您对问题的评论,您的主要问题似乎是您不知道如何制作菜单栏,因此我将解决问题的这一部分。
每个顶级窗口(Tk
和的实例Toplevel
)都有一个menu
可以设置为对象实例的Menu
属性。这个菜单本身可以有下拉菜单,这种组合就是菜单栏的组成部分。
为了完成这项工作,您必须首先创建菜单,然后将该菜单与窗口相关联。
import tkinter as tk
root = tk.Tk()
self.menubar = tk.Menu()
root.configure(menu=self.menubar)
要创建子菜单,您必须做一些非常相似的事情。首先,创建一个新Menu
实例,然后使用 .将其与菜单栏关联add_cascade
。通常,菜单将是菜单栏的子项。您使用该add_command
方法将项目添加到子菜单。
在您的情况下,您可能希望创建一个“查看”菜单,其中包含用于在“输入”和“销售”之间切换的项目。它看起来像这样:
viewMenu = tk.Menu(self.menubar)
self.menubar.add_cascade(label="View", menu=viewMenu)
viewMenu.add_command(label="Input", command=self.switch_to_input)
viewMenu.add_command(label="Sell", command=self.switch_to_sell)
例子
这是一个完整的工作示例。为了保持简单和主题,它实际上并没有切换页面。相反,它只是在标签中显示“页面”。
import tkinter as tk
class MenuExample:
def __init__(self):
self.root = tk.Tk()
self.label = tk.Label(self.root, width=25)
self.label.pack(side="top", fill="both", expand=True, padx=20, pady=20)
self._create_menubar()
def _create_menubar(self):
# create the menubar
self.menubar = tk.Menu(self.root)
self.root.configure(menu=self.menubar)
# File menu
fileMenu = tk.Menu(self.menubar)
self.menubar.add_cascade(label="File", menu=fileMenu)
fileMenu.add_command(label="Exit", command=self.root.destroy)
# View menu
viewMenu = tk.Menu(self.menubar)
self.menubar.add_cascade(label="View", menu=viewMenu)
viewMenu.add_command(label="Input", command=self.switch_to_input)
viewMenu.add_command(label="Sell", command=self.switch_to_sell)
def switch_to_input(self):
# put the code to switch to the input page here...
self.label.configure(text="you clicked on View->Input")
def switch_to_sell(self):
# put the code to switch to the sell page here...
self.label.configure(text="you clicked on View->Sell")
app = MenuExample()
tk.mainloop()