我有一个小型的交互式命令行应用程序,在其中我使用了来自hint_toolkit的提示功能来读取用户命令。一些命令将打开线程侦听器的端口,并在要侦听的端口上出现任何内容时显示在屏幕上。我的问题是,此打印将与用户输入的当前行混淆,因为这样会覆盖文本(缓冲区仍然存在,因此您可以执行命令,但看不到键入的内容)。我想要的行为是让侦听器在接受输入的行上方一行打印其文本。
或者,换句话说,存储当前写入的行,清除该行并返回回车符,打印收到的消息,换行然后打印存储的行。提示工具可以做到这一点吗?
谢谢
答案 0 :(得分:0)
自己找到答案,阅读文档:)
如果将promt()
调用包装在一个with patch_stdout():
块中,则hint_toolkit的行为将完全符合我的期望。
所以解决办法是
from prompt_toolkit import prompt
from prompt_toolkit.patch_stdout import patch_stdout
with patch_stdout():
cmd = prompt("> ")