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" 的键,则必须设置它.
我编写了这个函数,它接受指定屏幕上指定长度的用户输入:
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" 的键,则必须设置它.