0

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

或者换句话说,存储当前写入的行,清除行和回车,打印收到的消息,换行然后打印存储的行。prompt_toolkit 可以吗?

谢谢

4

1 回答 1

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("> ")
于 2019-05-17T07:41:30.760 回答