3

我有一个创建子窗口的简单 python 诅咒代码。但是,在运行函数 window.subwin() 的过程中失败并显示以下消息:

这里有一个测试用例:

import curses

if __name__ == '__main__':
    curses.initscr()

    window = curses.newwin(15, 40, 7, 20)
    window.box()
    window.refresh()

    subwindow = window.subwin(5, 10, 2, 2)
    subwindow.box()
    subwindow.refresh()

    subwindow.getkey()

    curses.endwin()

产生以下输出:

Traceback (most recent call last):
File "c.py", line 12, in <module>
  subwindow = window.subwin(5, 10, 2, 2)
_curses.error: curses function returned NULL

有没有办法获得更具描述性的信息?

4

1 回答 1

10

当无法创建子窗口(非法操作)时,可能会发生错误。这可能是因为您要求在窗口外绘制子窗口。

subwin方法接收绝对坐标(相对于屏幕,而不是父窗口)。如果subwin坐标在window之外,它将失败。另一个失败的原因:宽度或高度溢出窗口。

代替subwin,您可以使用derwin(派生窗口),它接收亲属坐标(不易出错)。

import curses

if __name__ == '__main__':
    curses.initscr()

    window = curses.newwin(15, 40, 7, 20)
    window.box()
    window.refresh()

    subwindow = window.derwin(5, 10, 2, 2)  # <- here is the change
    subwindow.box()
    subwindow.refresh()

    subwindow.getkey()

    curses.endwin()
于 2012-06-28T21:20:39.013 回答