如何使用Tkinter创建展示可点击执行对应功能按钮的下拉菜单
Tkinter 按钮式下拉菜单实现方法
你需要的点击顶级选项展开可点击功能项的下拉菜单,是Tkinter原生Menu组件的标准能力,无需自定义复杂控件即可实现。
核心实现步骤
- 先创建绑定到主窗口的顶层菜单栏对象
- 为每个顶级菜单项(比如「文件」「编辑」)创建对应的子菜单对象,设置
tearoff=0关闭菜单可拖拽脱离的默认特性 - 调用子菜单的
add_command()方法添加功能选项,每个选项通过command参数绑定对应的回调函数,点击时就会触发对应功能 - 最后将所有子菜单挂载到顶层菜单栏,再把菜单栏绑定到主窗口即可
可运行示例代码
import tkinter as tk from tkinter import messagebox # 功能回调函数 def new_file(): messagebox.showinfo("提示", "已触发新建文件功能") def open_file(): messagebox.showinfo("提示", "已触发打开文件功能") def save_file(): messagebox.showinfo("提示", "已触发保存文件功能") def exit_app(): root.destroy() # 初始化主窗口 root = tk.Tk() root.title("菜单演示") root.geometry("400x300") # 创建顶层菜单栏 main_menu = tk.Menu(root) # 创建文件子菜单 file_menu = tk.Menu(main_menu, tearoff=0) file_menu.add_command(label="新建", command=new_file, accelerator="Ctrl+N") file_menu.add_command(label="打开", command=open_file, accelerator="Ctrl+O") file_menu.add_command(label="保存", command=save_file, accelerator="Ctrl+S") file_menu.add_separator() # 功能分组分隔线 file_menu.add_command(label="退出", command=exit_app, accelerator="Ctrl+Q") # 将文件子菜单挂载到顶层菜单栏 main_menu.add_cascade(label="文件", menu=file_menu) # 可选:添加其他顶级菜单 edit_menu = tk.Menu(main_menu, tearoff=0) edit_menu.add_command(label="复制") edit_menu.add_command(label="粘贴") edit_menu.add_command(label="剪切") main_menu.add_cascade(label="编辑", menu=edit_menu) # 将菜单栏绑定到主窗口 root.config(menu=main_menu) # 可选:绑定快捷键 root.bind("<Control-n>", lambda e: new_file()) root.bind("<Control-o>", lambda e: open_file()) root.bind("<Control-s>", lambda e: save_file()) root.bind("<Control-q>", lambda e: exit_app()) root.mainloop()
常用扩展说明
- 单选/复选功能项:需要开关类、多选一类型的选项时,可以替换
add_command()为add_checkbutton()或add_radiobutton(),适配设置类功能需求 - 右键弹出菜单:同样用
Menu创建菜单对象,绑定鼠标右键点击事件,调用菜单的post(x,y)方法即可在指定位置弹出菜单 - 禁用菜单项:给
add_command()传入state=tk.DISABLED即可让对应选项置灰不可点击,适合特定场景下屏蔽功能
内容的提问来源于stack exchange,提问作者SecretSix
相关产品推荐
相关产品推荐

