Python Curses Backspace 检测在 main window 中有效,但在 subwindows 中无效

Python Curses Backspace detection works in main window but not in subwindows

我编写了这个函数,它接受指定屏幕上指定长度的用户输入:

def get_str(scr, max_len):

    curses.echo()
    curses.curs_set(2)

    usr_in = ''
    cur_len = 1;
    tmp = scr.getkey()   

    while(tmp != '\n' and cur_len < max_len):
        if tmp == 'KEY_BACKSPACE' and cur_len > 1:
            cur_len -= 1                
            usr_in = usr_in[:-1]
            curs_pos = scr.getyx()
            scr.addstr(curs_pos[0], curs_pos[1], " ")
            scr.move(curs_pos[0], curs_pos[1])
        else:
            usr_in += tmp
            cur_len += 1
        tmp = scr.getkey()

    if(cur_len == max_len):
        usr_in += tmp

    curses.noecho()
    curses.curs_set(0)

    return usr_in 

我正在使用 curses.wrapper 和一个设置所有 windows 的主函数。当我在 wrapper 给出的主要 window 中调用 get_str 时,该函数按预期工作。点击退格键将最后一个字符从屏幕上移开并将光标向后移动。但是,当我在主 window 的子 window 中调用它时,'^?'显示并且不会触发 if tmp == 'KEY_BACKSPACE' 语句。这就是我设置 subwindow:`

的方式
def main(stdscr):

    lines = curses.LINES - 1
    cols = curses.COLS - 1

    board = stdscr.subwin(curses.LINES, int(3*(curses.COLS/5)), 0, int(curses.COLS/5) + 1)
    board.border()`

Subwindow 不继承 keypad 设置。创建 window 时,如果要读取发送命名 KEY_ 符号的 "any" 的键,则必须设置它.