python 多级菜单
时间: 2023-04-10 12:02:24 浏览: 71
可以使用递归函数来实现多级菜单,以下是一个简单的示例代码:
```
def show_menu(menu, level=0):
for item in menu:
if isinstance(item, dict):
print(' ' * level + item['title'])
show_menu(item['submenu'], level + 1)
else:
print(' ' * level + item)
menu = [
'菜单1',
{
'title': '菜单2',
'submenu': [
'子菜单1',
'子菜单2',
{
'title': '子菜单3',
'submenu': [
'子子菜单1',
'子子菜单2'
]
}
]
},
'菜单3'
]
show_menu(menu)
```
运行结果:
```
菜单1
菜单2
子菜单1
子菜单2
子菜单3
子子菜单1
子子菜单2
菜单3
```
相关问题
python实现通用多级菜单功能(控制台菜单)
可以使用字典实现多级菜单功能,以下是一个示例代码:
```python
# 定义多级菜单字典
menu = {
'1': {
'name': '菜单1',
'children': {
'1-1': {
'name': '子菜单1-1',
'action': lambda: print('执行子菜单1-1的操作')
},
'1-2': {
'name': '子菜单1-2',
'action': lambda: print('执行子菜单1-2的操作')
}
}
},
'2': {
'name': '菜单2',
'children': {
'2-1': {
'name': '子菜单2-1',
'action': lambda: print('执行子菜单2-1的操作')
},
'2-2': {
'name': '子菜单2-2',
'children': {
'2-2-1': {
'name': '子菜单2-2-1',
'action': lambda: print('执行子菜单2-2-1的操作')
}
}
}
}
},
'3': {
'name': '退出'
}
}
# 定义打印菜单函数
def print_menu(menu_dict):
for key, value in menu_dict.items():
print(f"{key}. {value['name']}")
print()
# 定义执行菜单函数
def run_menu(menu_dict):
while True:
print_menu(menu_dict)
choice = input("请输入您的选择:")
if choice in menu_dict:
if 'action' in menu_dict[choice]:
menu_dict[choice]['action']()
break
else:
run_menu(menu_dict[choice]['children'])
elif choice == '3':
break
else:
print("非法输入,请重新输入!")
# 执行菜单函数
run_menu(menu)
```
这个代码实现了一个多级菜单,使用字典构建菜单结构,通过递归调用实现多级菜单功能。用户可以通过输入数字选择菜单项,程序会根据用户的选择执行相应的操作,如果选择的是一个有子菜单的菜单项,则会继续进入子菜单。如果选择的是退出菜单,则程序会退出。
tkinter 多级菜单
在 tkinter 中,可以使用 `Menu` 组件创建菜单。创建多级菜单需要使用 `add_cascade` 方法将一个子菜单添加到父菜单中。
下面是一个简单的示例代码,创建了一个包含两级菜单的菜单:
```python
import tkinter as tk
root = tk.Tk()
# 创建菜单栏
menu_bar = tk.Menu(root)
root.config(menu=menu_bar)
# 创建一级菜单
file_menu = tk.Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="File", menu=file_menu)
# 添加二级菜单
file_menu.add_command(label="New")
file_menu.add_command(label="Open")
file_menu.add_separator()
file_menu.add_command(label="Exit", command=root.quit)
# 创建另一个一级菜单
edit_menu = tk.Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="Edit", menu=edit_menu)
# 添加二级菜单
edit_menu.add_command(label="Cut")
edit_menu.add_command(label="Copy")
edit_menu.add_command(label="Paste")
root.mainloop()
```
在上面的代码中,首先创建了一个菜单栏 `menu_bar`,然后创建了两个一级菜单 `file_menu` 和 `edit_menu`,并将它们添加到菜单栏中。接着,向 `file_menu` 和 `edit_menu` 中添加了二级菜单。
运行上面的代码,就可以看到创建的多级菜单。