我已經在Python中編寫了一個curses程序。它運行良好。但是,當我使用nodelay()
時,程序在終端中啓動後立即退出,完全沒有任何顯示(僅提示新提示)。nodelay()導致python curses程序退出
編輯
此代碼將重現錯誤:
sc = curses.initscr() sc.nodelay(1) # But removing this line allows the program to run properly for angry in range(20): sc.addstr(angry, 1, "hi")
這裏是我完整的代碼
import curses, time, sys, random def paint(x, y, i): #... def string(s, y): #... def feed(): #... sc = curses.initscr() curses.start_color() curses.curs_set(0) sc.nodelay(1) ######################################### # vars + colors inited for angry in range(20): try: dir = chr(sc.getch()) sc.clear() feed() #lots of ifs body.append([x, y]) body.pop(0) for point in body: paint(*point, i=2) sc.move(height-1, 1) sc.refresh() time.sleep(wait) except Exception as e: print sys.exc_info()[0], e sc.getch() curses.beep() curses.endwin()
這是爲什麼happenning,我怎麼可以使用nodelay()
安全?
嘗試將您的代碼降低到重現錯誤所需的最小值。例如,你可以設置nodelay(),然後進入一個無限循環,當你getch()一個鍵時,循環會中斷並退出。如果錯誤在最小測試案例中消失,找出發生了什麼變化。如果這無助於發佈失敗的測試用例。 – Philip
@Philip好思想,已經這樣做了,併發布了結果。 – ACarter