Вывод текста при использовании функции подсказки prompt_toolkit
У меня есть небольшое интерактивное приложение командной строки, где я использую функцию подсказки из prompt_toolkit для чтения пользовательских команд. Некоторые команды открывают потоковые прослушиватели портов и выводят на экран всякий раз, когда что-то входит в порт, который он слушает. Проблема, с которой я столкнулся, заключается в том, что эта печать будет связываться с текущей строкой, которую вводит пользователь, в том смысле, что она будет перезаписывать текст (буфер все еще там, так что вы можете выполнить команду, но вы не увидите, что было напечатано). Мне хотелось бы, чтобы слушатели печатали свой текст на одну строку выше строки, в которой вводится.
Или, другими словами, сохраните строку, написанную в данный момент, очистите строку и возврат каретки, напечатайте полученное сообщение, новую строку, а затем напечатайте сохраненную строку. Это возможно с prompt_toolkit?
Спасибо
1 ответ
Нашел ответ сам, читая документы:)
Если вы заверните promt()
позвонить в with patch_stdout():
Блок тогда prompt_toolkit будет вести себя именно так, как я хотел.
Так что решение
from prompt_toolkit import prompt
from prompt_toolkit.patch_stdout import patch_stdout
with patch_stdout():
cmd = prompt("> ")