如果可能的话,怎样才能阻止打印到stdout中断所键入的内容呢?

2024-03-29 11:36:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个基本的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上的面板,但是我很想知道是否有必要在本地终端/命令提示符中严格实现这一点。我在互联网上搜索解决方案时,找不到任何像这样的东西!谢谢!你知道吗


Tags: 方法命令行服务器语言消息客户端客户机gui
1条回答
网友
1楼 · 发布于 2024-03-29 11:36:00

我会使用类似于https://pypi.python.org/pypi/blessings/的东西,它可以让你设置一个带有光标的终端。你知道吗

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

如果你想变得疯狂,你可以通过终端控制命令(在windows上你需要colorama)自己完成所有的魔法,它可以让你做如下事情:

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

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

相关问题 更多 >