2011-12-20 132 views
3

我正在爲使用curses模塊的服務器應用程序編寫前端。詛咒返回的主窗口分爲2個子窗口。屏幕的上半部分從服務器打印輸出,而最後一行用window.getstr()輸入。有時當我輸入文本時,上半部分正在更新,整個屏幕會隨着隨機字符替換現有字符而變得瘋狂。有沒有一個特定的原因,或者它是一個詛咒錯誤?在python getstr()中刷新時刷新

+0

我正在考慮實現這樣的事情,但是失去了通過服務器輸出回滾的能力是不可接受的。我想知道是否有辦法在curses中保留這個功能... – 2014-11-17 04:49:22

回答

4

我猜你正在使用線程來更新上方的顯示,而window.getstr()運行在主線程?

如果是這樣,問題是curses終端狀態是一個共享資源,不能同時從兩個不同的線程更新。你需要把終端設置爲非阻塞模式,使用window.getch()來建立一個輸入字符串,讓你的線程將上層窗口更新任務傳遞給主線程。

+0

我覺得這是類似的東西,但不想重新分解它,如果我沒有 – 2011-12-20 22:07:54