3

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

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

自键入以来 Client2 没有按 enter 的地方Who's there?

很明显,有各种各样的解决方法,比如 GUI 上的面板,但我很想知道是否有办法在本机终端/命令提示符下严格实现这一点。在我在互联网上寻找解决方案的过程中,我找不到任何类似的东西!谢谢!

4

1 回答 1

2

我会使用像https://pypi.python.org/pypi/blessings/这样的东西,它可以让你设置一个带有光标的终端。

当您想要打印来自另一个连接的输出时,您可以将光标“向上”移动,然后在您想要获取输入时将其向下移动。

如果您想发疯,您可以使用终端控制命令(在 Windows 上,您需要 colorama)自己完成所有这些魔法,这将使您可以执行以下操作:

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

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

于 2013-07-25T19:09:36.357 回答