如何在xonsh中显示选择菜单?

时间:2019-05-21 16:04:19

标签: python menu prompt prompt-toolkit xonsh

每当按下某个特定的组合键时,我想在xonsh外壳中显示一个选择菜单,然后使用菜单中的用户选择来运行功能。

我已经做到了这一点

from prompt_toolkit.keys import Keys
from prompt_toolkit.completion import WordCompleter

@events.on_ptk_create
def outout_keybindings(prompter, history, completer, bindings, **kw):
    handler = bindings.add

    @handler('escape', 'u')  # actually alt+u
    def browse_links_handler(event):
        compl = WordCompleter(['selection1','selection2', 'selection3', 'selection4'])
        usr_sel = prompter.prompt('Enter your selection (TAB-complete): ',  completer=compl)
        my_process_selection(usr_sel)

例如,可以输入~/.xonshrc

问题是,我的代码导致异常,但否则几乎可以正常工作,因为提示会显示,并且xonsh似乎知道所做的选择,但没有显示菜单,并且弹出错误消息:

Almost working menu

我可以使用其他解决方案来显示选择菜单并让用户选择一个选项,只要它是纯python并且不需要鼠标交互即可。

在常规提示工具包应用程序中,这可以完成我想要的操作:¹

https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#autocompletion

Working menu in regular ptk

¹_ _完成菜单应显示在imediatley中,而不是在用户键入第一个字母之后显示。 _

0 个答案:

没有答案