如何让 prompt_toolkit 提示在按下某个键之前提供完成?

How to make the prompt_toolkit prompt provide completions before a key is pressed?

python prompt_toolkit下的提示功能可以与默认字符串一起使用,该字符串出现在提示中,就好像用户已经输入了它一样。

defaultWord = u"cat"
prompt( u"Enter a word", completer=SomeCompleter, default=defaultWord)

我发现即使设置了 default,完成菜单也不会像用户实际输入的那样打开。你必须至少按下一个键才能让它这样做。

有没有办法在用户按下某个键之前强制显示完成菜单?

如果您使用的是 PromptSession,则可以将 pre_run 参数用于 PromptSession.prompt:

from prompt_toolkit import PromptSession
from prompt_toolkit.completion import WordCompleter
completer = WordCompleter([u"Hello", u"World"])
session = PromptSession(u"> ", completer=completer)
session.prompt(pre_run=session.default_buffer.start_completion)