Tôi đã viết một chương trình nguyền rủa trong python. Nó chạy tốt. Tuy nhiên, khi tôi sử dụng nodelay()
, chương trình sẽ thoát ngay lập tức sau khi bắt đầu trong thiết bị đầu cuối, không có gì được hiển thị (chỉ là một lời nhắc mới).nodelay() khiến chương trình nguyền rủa python thoát ra
EDIT
Mã này sẽ tái tạo các lỗi:
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")
Đây là mã đầy đủ của tôi
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()
Tại sao happenning này, và làm thế nào tôi có thể sử dụng nodelay()
một cách an toàn?
Hãy thử viết mã của bạn xuống mức tối thiểu cần thiết để tạo lại lỗi. Ví dụ bạn có thể thiết lập nodelay(), sau đó đi vào một vòng lặp vô hạn mà phá vỡ và thoát khi bạn getch() một khóa. Nếu lỗi đó biến mất trong trường hợp kiểm tra tối thiểu, hãy tìm hiểu xem điều gì đã thay đổi. Nếu điều đó không giúp đăng bài kiểm tra lỗi. – Philip
@Philip suy nghĩ tốt, đã làm như vậy và đăng kết quả. – ACarter