带光标的动态子菜单项菜单

2024-10-03 11:25:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python的curses-menu包,并了解在调用.show()之前静态定义菜单时如何在菜单中生成子菜单。我正在尝试创建一个菜单项,当选中时,将动态生成所选子菜单项。换句话说,当我选择一个项时,我希望运行代码,例如,接受一些用户输入,并将每个字符串作为一个项生成类似于^{}的东西。最后,我希望使用选定的字符串作为函数的输入。在

我正在尝试的是:

# 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()

它似乎可以工作,但一旦我从子菜单中选择了退出,父菜单就会重新绘制,并且光标键停止工作。它不移动选择器,而是提供带有字母的控制字符,如左上角所示:

^{pr2}$

我用的是python3。在

使用SelectionMenu是正确的方法吗?如果是这样的话,在返回父主菜单后如何修复它?如果没有,我应该如何创建这样一个动态子菜单?在


Tags: the字符串fromimportbuilddefshow菜单