3

サブウィンドウを作成する単純なPythoncursesコードがあります。ただし、関数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座標がウィンドウの外側にある場合は失敗します。失敗するもう1つの理由:幅または高さがウィンドウからオーバーフローします。

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 に答える