我在Python中有一个基本的命令行聊天客户端和服务器,但这可能适用于任何语言。我遇到了一个非常明显的问题,我不确定是否有办法解决它(除了使用一个GUI!这将很快解决问题)。当服务器向客户机发送消息,导致客户机print()该消息时,它被插入到与该用户键入自己的消息完全相同的位置,导致该消息被传入的消息分割。例如(写为注释以避免奇怪的语法突出显示):

# Client1: Knock-knock!
# Client2: Who's there?
# Client1: Interrupting cow!
# Client2: Inter
# Client1: MOOOOOOO
# Client2: rupting cow who?

其中Client2在键入Who's there?后未按enter键。
很明显,有各种各样的解决方法,比如GUI上的面板,但是我很想知道是否有办法在本地终端/命令提示符中严格实现这一点。我在网上搜索解决方案的时候,根本找不到这样的东西!谢谢!

最佳答案

我会使用类似https://pypi.python.org/pypi/blessings/的东西,让你用光标设置一个终端。
当您想从另一个连接打印输出时,可以将光标“向上”移动,当您想获得输入时,可以将光标向下移动。
如果你想发疯,你可以用终端控制命令(在windows上,你需要colorama)自己完成所有的魔术,这样你就可以做如下事情:

print("\033[6;3HHello")

它将光标移动到x,y。这需要一个ansi终端。

08-24 12:42