Python curses 中 getstr() 刷新时的问题

4 投票
1 回答
2342 浏览
提问于 2025-04-17 08:40

我正在用curses模块为一个服务器应用程序写前端。curses返回的主窗口被分成了两个子窗口。屏幕的上半部分显示服务器的输出,而下半部分则用window.getstr()来接收输入。有时候,当我在输入文本时,上半部分在更新,整个屏幕就会出现乱七八糟的字符,原本的字符被随机的字符替代。这是有什么特定的原因,还是curses的一个bug呢?

1 个回答

4

我猜你是在用一个线程来更新上面的显示,而同时在主线程中运行window.getstr()对吧?

如果是这样的话,问题在于curses终端的状态是一个共享资源,不能同时被两个不同的线程更新。你需要把终端设置为非阻塞模式,使用window.getch()来构建输入字符串,然后让你的线程把更新上面窗口的任务交给主线程来处理。

撰写回答