Вы можете создать пользовательскую привязку ключа, чтобы выполнить завершение, когда пользователь нажимает ввод. Например:
from prompt_toolkit import prompt
from prompt_toolkit.completion import FuzzyWordCompleter
from prompt_toolkit.key_binding import KeyBindings
from prompt_toolkit.filters import (
has_completions,
completion_is_selected,
)
# Override enter key to automatically perform first completion.
key_bindings = KeyBindings()
filter = has_completions & ~completion_is_selected
@key_bindings.add("enter", filter=filter)
def _(event):
event.current_buffer.go_to_completion(0)
event.current_buffer.validate_and_handle()
completer = FuzzyWordCompleter([
"Using", "Testing", "Building", "Designing", "Documenting"
])
result = prompt("$ ",
completer=completer,
complete_while_typing=True,
key_bindings=key_bindings,
)
if result:
print(result)
Привязки клавиш, которые будут переопределены, в настоящее время находятся в shortcuts/prompt.py
и key_binding/bindings/basic.py
.
Если ваш Приложение «запрос» является более сложным (например, многострочный ввод или несколько буферов), тогда вам, вероятно, понадобится дополнительный лог c для обработки этих случаев. prompt_toolkit.filters.is_multiline
может быть полезным.