使用hint_toolkit提示功能时输出文本

时间:2019-05-16 13:01:21

标签: python prompt-toolkit

我有一个小型的交互式命令行应用程序,在其中我使用了来自hint_toolkit的提示功能来读取用户命令。一些命令将打开线程侦听器的端口,并在要侦听的端口上出现任何内容时显示在屏幕上。我的问题是,此打印将与用户输入的当前行混淆,因为这样会覆盖文本(缓冲区仍然存在,因此您可以执行命令,但看不到键入的内容)。我想要的行为是让侦听器在接受输入的行上方一行打印其文本。

或者,换句话说,存储当前写入的行,清除该行并返回回车符,打印收到的消息,换行然后打印存储的行。提示工具可以做到这一点吗?

谢谢

1 个答案:

答案 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("> ")