Python终端聊天:如何避免消息覆盖终端中我当前未发送的消息?

时间:2019-04-12 10:15:18

标签: python input terminal output chat

我正在使用Python在多个客户端之间的终端上创建简单的聊天。 问题是,每当我键入一条消息时,它就会被终端中的传入消息覆盖。但是,这只是视觉上的,当完成我的消息并按Enter时,仍然发送我的整个消息。 如何避免我的邮件被覆盖?

我尝试使用以下输出调整代码行,目的是在创建的新行上打印所有传入消息:

sys.stdout.write("\033[F") #back to previous line
print("\n") #create a new line between second last and last line
print(msg) #print on new line any incoming messages

或这样:

print("\r") #go back to line start
print("\n") #create a new line after last line (this also pushes any unfinished message to this new last line)
sys.stdout.write("\033[F") #back to previous line (empty now)
print(msg) #print on new line any incoming messages

但是实际上并没有按预期工作。 我还尝试仅在输入缓冲区(=最后一行?)为空时才写收到的消息。我没有此代码了,因为它无法正常工作,但它看起来像这样:

while sys.stdin.buffer.read():
    #do nothing
print(msg)

1 个答案:

答案 0 :(得分:0)

您需要为聊天输入位置设置一个固定位置。使用curses是构建此类输入应用程序最简单的方法。这是仅使用python Python console application - output above input line

的类似问题