如何制作便携式curses界面?

时间:2017-03-04 16:37:49

标签: python terminal python-2.x ncurses curses

我正在尝试在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'字符),但是如果我在执行期间第二次调整它的大小,它将无效并且它将为空对于终端的某些部分。

我怎样才能让它按照我想要的方式运作?

1 个答案:

答案 0 :(得分:0)

您必须通过调用SIGWINCH来处理getch(使用ncurses),当KEY_RESIZE ncurses被中断时,SIGWINCH会返回initscr

进一步阅读: