刷新时在python getstr()中进行诅咒


问题内容

我正在使用curses模块为服务器应用程序编写前端。curses返回的主窗口分为2个子窗口。屏幕的上半部分显示服务器的输出,而下一行则使用window.getstr()进行输入。有时,当我输入文本而上半部分正在更新时,整个屏幕会因为随机字符替换现有字符而发疯。是否有特定的原因,或者是一个诅咒错误?


问题答案:

我猜你在window.getstr()在主线程中运行时正在使用一个线程来更新上部显示吗?

如果是这样,那么问题在于curses终端状态是一个共享资源,无法同时从两个不同的线程中进行更新。您需要将终端置于非阻塞模式,使用window.getch()建立一个输入字符串,并使您的线程将上层窗口更新任务传递给主线程。