一、Menu简介
Menu 组件是 tkinter 提供的一种可以生成窗口顶部的菜单栏、或生成右键上下文菜单的组件。Menu 是一个容器,可以添加各种命令和子菜单,创建基本菜单的步骤:
1.引入 tkinter 模块并创建主窗口 app = tk.Tk() 2.创建一个顶级菜单 menu_bar = tk.Menu(app) 3.添加常规菜单项 file_menu.add_command(label="New", command=new_file) 3.添加常规菜单项到顶级菜单 menu_bar.add_cascade(label="File", menu=file_menu) 4.将顶级菜单配置到主窗口 app.config(menu=menu_bar)
二、创建顶部菜单栏和右键菜单栏示例代码
import tkinter as tk
from tkinter import messagebox
def new_file():
messagebox.showinfo("Menu Info", "New File selected")
def open_file():
messagebox.showinfo("Menu Info", "Open File selected")
def exit_app():
app.quit()
app = tk.Tk()
app.geometry("500x300+400+300")
app.title("Menu Example")
# 创建一个顶级菜单
menu_bar = tk.Menu(app)
# 创建一个文件菜单,添加到顶级菜单
file_menu = tk.Menu(menu_bar, tearoff=0) # tearoff: 如果设置为 0,则菜单项不会以独立窗口的方式弹出
file_menu.add_command(label="New", command=new_file)
file_menu.add_command(label="Open", command=open_file)
file_menu.add_separator() # 添加分隔符
file_menu.add_command(label="Exit", command=exit_app)
menu_bar.add_cascade(label="File", menu=file_menu)
# 创建另一个编辑菜单,添加到顶级菜单
edit_menu = tk.Menu(menu_bar, tearoff=0)
edit_menu.add_command(label="Cut")
edit_menu.add_command(label="Copy")
edit_menu.add_command(label="Paste")
menu_bar.add_cascade(label="Edit", menu=edit_menu)
# 将顶级菜单配置到主窗口
app.config(menu=menu_bar)
def show_context_menu(event):
context_menu.post(event.x_root, event.y_root)
# 创建右键菜单
context_menu = tk.Menu(app, tearoff=0)
context_menu.add_command(label="Cut")
context_menu.add_command(label="Copy")
context_menu.add_command(label="Paste")
app.bind("<Button-3>", show_context_menu) # 右键点击事件
app.mainloop()
演示效果: