如何在不暂停程序等待输入的情况下使用 curses 响应按键?

How can I use curses to respond to a key press without pausing the program to wait for an input?

我想做的一个例子如下:

import curses

while True:
        key = stdscr.getch()

        if key == 119:
            print("key w pressed")
        else:
            print("w key not pressed")

else 语句不断打印的地方,不仅是在输入一个键时,而 getch 没有 return119。换句话说,我不希望 getch 函数等待按键,我只希望它只 return 一个键 如果 一个键被按下,否则 return None 或类似的东西。

在 curses 中 window 有一个 nodelay 标志。如果设置为 true,getch 函数将不会等待用户输入,但如果没有输入将被读取 return -1

import curses

stdscr.nodelay(True)

while True:
        key = stdscr.getch()
        if key == -1:
            print("no key was pressed")
        elif key == 119:
            print("key w pressed")
        else:
            print("different key than w was pressed")