每当按下某个特定的组合键时,我想在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似乎知道所做的选择,但没有显示菜单,并且弹出错误消息:
我可以使用其他解决方案来显示选择菜单并让用户选择一个选项,只要它是纯python并且不需要鼠标交互即可。
在常规提示工具包应用程序中,这可以完成我想要的操作:¹
https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#autocompletion
¹_ _完成菜单应显示在imediatley中,而不是在用户键入第一个字母之后显示。 _