此问题在此处已有答案:
Workaround for ncurses multi-thread read and write(1个答案)
21天前关闭
这篇文章是在19天前编辑并提交审查的。
我有一些Python代码,使用curses来连续打印“测试机器人”。并允许我发送消息,同时现在它的打印“测试机器人”。很好,但当我尝试输入“测试用户”。在它之前有一些奇怪的间距这里的代码:
import curses, threading, time
def print_hello(chat_win):
while True:
chat_win.addstr("Test Bot.\n")
chat_win.refresh()
time.sleep(0.5)
def chat_app():
stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(True)
curses.curs_set(0)
chat_win = curses.newwin(curses.LINES - 2, curses.COLS, 0, 0)
chat_win.scrollok(True)
input_win = curses.newwin(1, curses.COLS, curses.LINES - 1, 0)
input_win.addstr("Enter Message: ")
input_win.refresh()
hello_thread = threading.Thread(target=print_hello, args=(chat_win,))
hello_thread.daemon = True
hello_thread.start()
while True:
key = input_win.getch()
if key == key == 10:
message = input_win.instr(0, 14).decode()
chat_win.addstr(message + "\n")
input_win.clear()
input_win.addstr("Enter Message: ")
else:
input_win.addch(key)
input_win.refresh()
chat_win.refresh()
chat_app()
字符串
下面是当我运行它并尝试输入“测试用户”时发生的情况:
Test Bot. Test Bot. Test Bot. Test Bot. Test Bot. Test Bot.
Test Bot.
Test Bot. Test Bot.
Test User.
Test Bot.
Test Bot.
Test Bot.
Test Bot.
Test Bot.
Test Bot.
Test Bot.
Test Bot.
Enter Message:
型
现在我完全不明白为什么会发生这种情况。
1条答案
按热度按时间xqk2d5yq1#
这是“输入消息:“string。您应该将instr方法的x坐标再移动一个字符:
字符串