вывод текста при использовании функции подсказки prompt_toolkit - PullRequest
0 голосов
/ 16 мая 2019

У меня есть небольшое интерактивное приложение командной строки, где я использую функцию подсказки из prompt_toolkit для чтения пользовательских команд. Некоторые команды открывают потоковые прослушиватели портов и выводят на экран всякий раз, когда что-то входит в порт, который он слушает. Проблема, с которой я столкнулся, состоит в том, что эта печать будет связываться с текущей строкой, которую вводит пользователь, в том смысле, что она будет перезаписывать текст (буфер все еще там, так что вы можете выполнить команду, но вы не увидите, что было набрано). Мне хотелось бы, чтобы слушатели печатали свой текст на одну строку над строкой, в которой вводится информация.

Или, другими словами, сохранить текущую строку, очистить строку и возврат каретки, распечатать полученное сообщение, новую строку, а затем распечатать сохраненную строку. Это возможно с prompt_toolkit?

спасибо

1 Ответ

0 голосов
/ 17 мая 2019

Нашел ответ сам, читая документы :)

Если вы заключите вызов promt() в блок with patch_stdout():, то prompt_toolkit будет вести себя точно так, как я хотел.

Так что решение

from prompt_toolkit import prompt
from prompt_toolkit.patch_stdout import patch_stdout

with patch_stdout():
    cmd = prompt("> ")
...