我正在尝试编写一个(命令行)Python程序,该程序将接受用户的输入,同时仍在其上方打印数据。我正在尝试制作聊天程序。
示例:
[stuff prints here]
hello
warning: the time is 27:64
Please enter your input: asdf
所以我键入了asdf
,但是当我键入时,上方的输出继续进行更新。如果愿意,我可以在产生输出时继续输入。然后,如果我按Enter,其他事情会发生。输入字段应始终保持在输出的文本下方下方;如果显示更多文本,则将输入字段推向下(但其内容保留在原位)。
我的想法是:
- 这需要某种非阻滞阅读...
- ...还是线程?一个用于输入的线程,一个用于输出。
- 我可能需要进行一些光标操作(即向上移动光标,打印输出,将光标返回到用户输入区域)?
我意识到GUI会更容易做。我可能最终只是用TKINTER进行此操作。但是我想知道在命令行的python中是否可以使用这种事情。
谢谢。
编辑:我忘了提到我确实知道如何用马车返回(r
)擦除文本。问题确实在于确保当我删除行时,我不清楚用户输入:因此,如果我在打字时出现了一条新行,我不希望输入我到目前为止都可以删除。<<<<<<<<
这种问题的经典方法是:
- 有一个服务器模块收听传入请求,并打印输入
- 有一个螺纹客户端模块(在我们的示例中分配给2个线程)。
- 客户将使用python的线程库同时表现。