我正在使用Python 2制作聊天应用程序。没有GUI,所有CLI。我试图想办法总是确保等待命令的raw_input提示,包括用户到目前为止输入的所有内容,始终是最后显示的内容。不一定需要位于用户视图的底部。只需要低于迄今为止所发生的一切。
事实是,如果其他人向用户发送消息,当提示中弹出消息然后光标向下移动而没有提示等时,它看起来会让人感到困惑和邋。
例如:
--- Started chat ---
Input: Hello. Good to meeReceived: Hi there!
t you. ('Enter')
Input:
在此示例中,用户在键入“meet”的过程中收到一条消息。用户在键入“你”后仍然可以发送消息,而另一个用户仍然会收到“你好。很高兴认识你”。但这显然看起来很糟糕。当用户尝试在输入中向应用程序键入命令时,也可能发生这种情况,并不总是向其他人输入消息,或者根本没有输入任何内容。理想情况下,其他一些线程的输出会打印出来,到目前为止输入行看起来就像是刚推下来的那样。
我需要这个在Windows以及其他系统上工作,所以我认为我不能使用curses,或者使用像urwid或npyscreen建议here这样的curses创建的库。我有一个想法,即侦听消息的线程可能只是以某种方式复制到目前为止在提示行上的内容,然后删除行上的文本,显示一条消息,然后在新行上打印复制的输入行,这样光标将是回到原来的位置。那可能吗?有没有办法在其他一些windows / unix / linux友好的方式中实现这一点?