gpt4 book ai didi

python - 控制台中的输入文本被程序的输出分成多行

转载 作者:行者123 更新时间:2023-12-01 09:06:38 25 4
gpt4 key购买 nike

我目前正在使用 Python 开发一个聊天应用程序,但目前面临一个恼人的问题。当用户向控制台输入消息时,另一个用户正在发送消息,第一个用户的输入消息将被分成多行。我附上了问题的图片。

如您所见,输入被控制台的输出拦截。

知道如何防止这种情况吗?

对于输入,当 friend 向 channel 发送消息时,我按住了 Z。正如您所看到的,它被出现的消息打断了。

编辑:

import colorama
from termcolor import cprint
colorama.init()

green = '\33[92m'
reset = '\033[0m'

def receive_messages():
while True:
data = s.recv(1024).decode()
#s is a previously defined socket
ind = data.index(">") + 1
usr = data[:ind]
raw = data[ind:]
cprint(green + usr + green + reset + raw + reset)

threading.Thread(target = receive_messages).start()

username = #opens the file where the username is stored: <username>

while True:
txt = input()
s.send((username + " " + txt).encode())

我想要的是将输入文本锁定在一行中,而不是分成多行。

最佳答案

为了自己处理这个问题,您需要逐个字符地跟踪用户输入。收到消息后,在打印之前,删除用户输入,打印传入的消息,然后重新打印部分输入的消息。这将使消息不被中断。

为了简单起见,更好的想法是使用类似 py-term 的东西。或npyscreen (尽管我不确定这些库特别具有您需要的所有功能)为了管理您到终端的输出,这应该使您可以更轻松地管理消息的打印位置以及用户消息输入的显示位置终端窗口。

关于python - 控制台中的输入文本被程序的输出分成多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51993906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com