我正在使用Python的curses-menu软件包,并了解在调用.show()
之前静态定义菜单时如何在菜单中创建子菜单。我正在尝试制作一个菜单项,当选择该菜单项时,它将动态生成所选子菜单的项目。换句话说,当我选择一个项目时,我希望运行代码,比如说,接受一些用户输入,并将每个字符串作为项目制作类似SelectMenu
的内容。最后,我想使用所选字符串作为函数的输入。
这是我尝试的内容:
# Import the necessary packages
from cursesmenu import *
from cursesmenu.items import *
def work_with_selection(selection):
print('You selected {}'.format(selection))
def build_sub():
items = []
for i in range(3):
item = input('Type an item: ')
items.append(item)
selection = SelectionMenu(items).get_selection(items)
work_with_selection(selection)
# Create the menu
menu = CursesMenu("Title", "Subtitle")
# Create some items
# Dynamically build submenu
build_item = FunctionItem("Build dynamic submenu", build_sub)
menu.append_item(build_item)
# Finally, we call show to show the menu and allow the user to interact
menu.show()
除了我从子菜单中选择退出,父菜单重绘,光标键停止工作外,它似乎有效。它不是移动选择器,而是为控制字符提供如下左上角的字母:
^[[B^[[A^[[B───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ Title │
│ │
│ Subtitle │
│ 1 - Build dynamic submenu │
│ 2 - Exit │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
│ 4 - Exit │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
我使用的是Python 3。
正在使用SelectionMenu
正确的方法吗?如果是这样,一旦我返回它,如何修复父主菜单?如果没有,我应该如何创建这样一个动态子菜单?