我正在尝试在Python中使用Curses创建一个接口,但是我想知道当脚本执行时窗口的终端增加时如何使它更具可移植性。
例如,此代码位于窗口(height:80,width:24)
:
#!/usr/bin/python
import curses
import time
stdscr = curses.initscr()
curses.cbreak()
curses.noecho()
stdscr.keypad(1)
try:
# Run your code here
height,width = stdscr.getmaxyx()
num = min(height,width)
for x in range(num):
stdscr.addch(x,x,'X')
stdscr.refresh()
time.sleep(3)
finally:
curses.nocbreak()
stdscr.keypad(0)
curses.echo()
curses.endwin()
可以工作,并且可以随便携带任何窗口(它会为整个窗口的大小打印许多'X'字符),但是如果我在执行期间第二次调整它的大小,它将无效并且它将为空对于终端的某些部分。
我怎样才能让它按照我想要的方式运作?
答案 0 :(得分:0)
您必须通过调用SIGWINCH
来处理getch
(使用ncurses),当KEY_RESIZE
ncurses被中断时,SIGWINCH
会返回initscr
。
进一步阅读:
getch
手册页)-S k551l\sqlexpress
手册页)