use*_*056 3 python curses ncurses
我有一个简单的python curses代码,可以创建一个子窗口.但是,在运行函数的过程中,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()
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
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
Run Code Online (Sandbox Code Playgroud)
有没有办法获得更具描述性的信息?
当无法创建子窗口(非法操作)时,可能会发生错误.这可能是因为您要求在窗口外绘制子窗口.
方法subwin接收绝对坐标(相对于屏幕,而不是父窗口).如果subwin坐标在窗口之外,它将失败.失败的另一个原因:宽度或高度溢出窗口.
您可以使用derwin(派生窗口)代替subwin,它接收亲属坐标(不易出错).
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3372 次 |
| 最近记录: |