python tkinter 在frame上创建可选菜单
时间: 2024-12-29 16:34:39 浏览: 16
在Python的Tkinter库中,要在一个`Frame`上创建可选菜单,你可以使用`ttk`模块中的`Menubutton`和`Menu`组件。首先,你需要导入必要的模块并创建一个`Menubutton`,然后在其下添加`Menu`选项。这里是一个简单的示例:
```python
import tkinter as tk
from tkinter import ttk
# 创建主窗口
root = tk.Tk()
# 创建一个顶层框架
top_frame = ttk.Frame(root)
top_frame.pack(pady=10)
# 创建Menubutton和它的Menu
menu_button = ttk.Menubutton(top_frame, text="选择操作")
menu_button.grid(row=0, column=0)
# 创建一个子菜单列表
menu_list = ["选项1", "选项2", "更多"]
# 定义子菜单函数
def show_menu(event):
popup_menu.tk_popup(event.x_root, event.y_root)
# 创建动态菜单
popup_menu = tk.Menu(menu_button, tearoff=0)
for item in menu_list:
popup_menu.add_command(label=item, command=lambda item=item: print(f"选择了 {item}"))
# 绑定鼠标点击事件到菜单展开
menu_button.config(command=show_menu)
# 运行主循环
root.mainloop()
```
在这个例子中,当你点击`Menubutton`时,会弹出一个包含`menu_list`里项目的菜单。当你从菜单中选择某个项时,对应的命令会被执行。
阅读全文
相关推荐


















