python寫一個多級菜單欄位中菜單中多個子菜單的gui窗口,每個子菜單在窗口顯示的内容和標簽和文本框都不一樣
时间: 2023-11-27 22:54:16 浏览: 58
以下是一个简单的多级菜单GUI窗口的Python代码示例,可以根据需要自行修改:
```python
import tkinter as tk
class MenuWindow:
def __init__(self, master, menu_data):
self.master = master
self.menu_data = menu_data
self.current_menu = menu_data
# 创建主菜单按钮
self.menu_button = tk.Button(self.master, text="Menu", command=self.show_menu)
self.menu_button.pack()
# 创建子菜单窗口
self.submenu_window = tk.Toplevel(self.master)
self.submenu_window.withdraw()
# 创建标签和文本框
self.label = tk.Label(self.submenu_window, text="Submenu")
self.label.pack()
self.textbox = tk.Text(self.submenu_window)
self.textbox.pack()
def show_menu(self):
# 显示当前菜单的选项
for option in self.current_menu:
button = tk.Button(self.master, text=option["label"], command=lambda option=option: self.select_option(option))
button.pack()
def select_option(self, option):
# 更新当前菜单并显示子菜单窗口
self.current_menu = option.get("submenu", [])
self.label.config(text=option.get("label", "Submenu"))
self.textbox.delete("1.0", tk.END)
self.textbox.insert(tk.END, option.get("content", ""))
self.submenu_window.deiconify()
```
使用示例:
```python
# 菜单数据
menu_data = [
{"label": "Option 1", "content": "Content of option 1"},
{"label": "Option 2", "submenu": [
{"label": "Suboption 1", "content": "Content of suboption 1"},
{"label": "Suboption 2", "content": "Content of suboption 2"}
]},
{"label": "Option 3", "content": "Content of option 3"}
]
# 创建主窗口和菜单窗口
root = tk.Tk()
menu_window = MenuWindow(root, menu_data)
# 运行主循环
root.mainloop()
```
在此示例中,菜单数据使用嵌套字典的形式表示,每个菜单项包含一个标签(label)和一个内容(content)或子菜单(submenu)。在GUI窗口中,每个菜单项都是一个按钮,点击时会更新当前菜单并在子菜单窗口中显示相应的内容或子菜单。子菜单窗口包含一个标签和一个文本框,用于显示菜单项的内容。
阅读全文