Python - 打印输出时读取用户输入

时间:2014-01-25 21:55:29

标签: python user-input

我正在尝试编写一个(命令行)python程序,该程序将接受来自用户的输入,同时仍在其上方打印数据。我正在尝试制作聊天程序。

示例:

[stuff prints here]
hello
warning: the time is 27:64

Please enter your input: asdf

所以我输入了asdf,但在输入时,上方的输出会继续进行更新。如果我想,我可以在生成输出时继续输入。然后如果我按回车键,就会发生其他事情。输入字段应始终低于输出的文本;如果显示更多文本,则输入字段将被按下(但其内容仍保留在原位)。

我的想法是:

  • 这需要某种非阻塞的阅读......
  • ...或者可能是线程?一个用于输入的线程,一个用于输出。
  • 我可能需要做一些光标操作(即向上移动光标,打印输出,将光标返回到用户输入区域)?

我意识到GUI会更容易做到。我可能最终只是用tkinter这样做了。但我仍然想知道命令行中是否有可能在python中使用这种东西。

感谢。

修改 我忘了提到我确实知道如何用回车符擦除文本(\r)。问题实际上是确保当我擦除行时,我不清除用户输入:所以如果在我输入时出现新行,我不希望到目前为止输入的内容被删除。 / p>

1 个答案:

答案 0 :(得分:0)

解决此类问题的经典方法是:

  • 让服务器模块侦听传入请求并打印输入
  • 拥有一个线程客户端模块(在我们的示例中分为两个线程)。
  • 通过使用Python的线程库,客户端将能够同时运行。