在 python curses 中获取更新的屏幕尺寸
get updated screen size in python curses
我在 python 中使用 curses 库,我知道获取屏幕尺寸的唯一方法是使用 curses.LINES
和 curses.COLS
。但是,即使读取了 "KEY_RESIZE"
键,这些值也永远不会更新,如下例所示:
import curses
f = open("out.log", "w")
def log(msg):
f.write(msg)
f.flush()
stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(True)
while True:
stdscr.clear()
stdscr.refresh()
key = stdscr.getkey()
log(key)
if key == "KEY_RESIZE":
log("{} {}".format(curses.LINES, curses.COLS))
if key == "q":
break
stdscr.keypad(False)
curses.nocbreak()
curses.echo()
curses.endwin()
f.close()
在我的输出文件 out.log
中,我可以看到当我调整 curses window 的大小时,它正确地写入了 KEY_RESIZE
y,但是 curses.LINES
的值和curses.COLS
没有更新。我缺少什么?
使用rows, cols = stdscr.getmaxyx()
代替curses.LINES
和curses.COLS
我在 python 中使用 curses 库,我知道获取屏幕尺寸的唯一方法是使用 curses.LINES
和 curses.COLS
。但是,即使读取了 "KEY_RESIZE"
键,这些值也永远不会更新,如下例所示:
import curses
f = open("out.log", "w")
def log(msg):
f.write(msg)
f.flush()
stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(True)
while True:
stdscr.clear()
stdscr.refresh()
key = stdscr.getkey()
log(key)
if key == "KEY_RESIZE":
log("{} {}".format(curses.LINES, curses.COLS))
if key == "q":
break
stdscr.keypad(False)
curses.nocbreak()
curses.echo()
curses.endwin()
f.close()
在我的输出文件 out.log
中,我可以看到当我调整 curses window 的大小时,它正确地写入了 KEY_RESIZE
y,但是 curses.LINES
的值和curses.COLS
没有更新。我缺少什么?
使用rows, cols = stdscr.getmaxyx()
代替curses.LINES
和curses.COLS