9.10 菜单

Tkinter的菜单是一种用于创建图形用户界面(GUI)的组件之一。通常用于创建程序的菜单栏和弹出式菜单。 菜单栏是一个水平条,其中包含多个菜单按钮,每个按钮代表一个菜单。当你单击菜单按钮时,菜单将款项下拉并显示相应的子菜单。 弹出式菜单是一个浮动菜单,通常出现在GUI的鼠标右键单击事件中。实现弹出式菜单需要两个主要的组件:菜单项目和菜单。 菜单项目是弹出式菜单中的条目或选项,当它被单击时,将触发相应的操作。 菜单则是弹出式菜单的容器,它包含一个或多个菜单项目。你可以通过编程设置菜单的属性,如菜单背景颜色、字体、选项等等。 在Tkinter中,为了创建菜单,你需要创建一个菜单并将它作为菜单栏中的一个菜单。菜单中的所有子菜单和菜单项目都可以通过cascade和add方法动态地添加。 以下是一些常用的Tkinter菜单组件:
 - Menu:生成一个菜单对象。
- add_command():向菜单中添加一个命令。
- add_separator():向菜单中添加一个分隔栏。
- add_cascade():添加子菜单,每个子菜单可以包括一个或多个子菜单项目。
- tkMessageBox:生成GUI消息框,它们可以使用提示消息、警告、错误等对话框。
下面这个例子展示了如何在Tkinter中创建一个简单的菜单栏,其中包含一个菜单按钮和一个子菜单:
import tkinter as tk
# 创建主窗口实例
root = tk.Tk()
# 回调函数,用于在单击菜单项时打印菜单的名称
def menu_callback(menu):
    print(menu)
# 创建一个菜单栏
menu_bar = tk.Menu(root)
# 创建一个菜单按钮
file_menu = tk.Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="File", menu=file_menu)
# 向文件菜单添加子菜单项目,并为每个子菜单项目绑定回调函数
file_menu.add_command(label="New", command=lambda: menu_callback("New"))
file_menu.add_command(label="Open...", command=lambda: menu_callback("Open"))
file_menu.add_command(label="Save", command=lambda: menu_callback("Save"))
file_menu.add_separator()
file_menu.add_command(label="Exit", command=root.quit)
# 将创建的菜单栏与窗口绑定
root.config(menu=menu_bar)
# 进入Tkinter事件循环
root.mainloop()
效果如图: