我正在尝试创建一个命令行聊天应用程序。我希望用户能够在用户输入消息的过程中接收消息而不会中断消息。
例如,如果我的程序是:
from time import sleep
from threading import Thread
def print_received_message():
counter = 0
while True:
print(counter)
counter += 1
sleep(1)
t = Thread(target = print_received_message)
t.start()
while True:
my_message = input('>')
print(my_message)
而我目前正在输入我的消息 2 秒,我希望看到以下内容:
0
1
2
> Currently typ
如果我在 4 秒后完成输入和发送消息,我希望看到:
0
1
2
3
4
Currently typing
>
但是,我目前看到:
0
> 1
Cur2
rent3
ly4
5
我看过 this 帖子,但该解决方案将输出排入队列,直到我完成输入,而我希望实时打印输出。
我考虑过:当消息到达时,将用户输入的内容保存到far,清除行,打印新消息,然后打印保存的消息进度。但是,在用户不按 Enter 键的情况下获取用户输入似乎很困难,而且这个解决方案总体上感觉很黑。
有什么办法可以实现这个目标,还是不可行?