質問

呪いを使った簡単な GUI を作成しました。ただし、curses メニューが終了すると、メイン プログラムが終了するまで、print 関数は画面に何も出力しません。

以下の例では、calc.py を実行すると、foo(calcDirs) の実行後に「Directory list ok」というテキストが画面に出力されます。行をコメントアウトすると folderSelection.menu(dirs) テキストは通常​​どおり画面に出力されます。何か案は?Python2.5を使用しています

計算.py:

import folderSelection
[...]
calcDirs=folderSelection.menu(dirs)
print "Directory list ok"
foo(calcDirs)

フォルダー選択.py:

import curses
def menu(folders):
    global scr
    scr = curses.initscr()
    curses.noecho()      # Do not echo keypresses
    curses.cbreak()      # No enter required
    scr.keypad(1)   # Support keypad
    curses.curs_set(0)   # Do not show the cursor

    # Do some calculations
    [...]

    exitCurses()
    return calcDirs

def exitCurses():
    global scr
    curses.nocbreak()
    curses.curs_set(1)
    scr.keypad(0)
    curses.echo()
    curses.endwin()

編集: テキストはプログラムが終了するまで必然的に遅延するようです。30〜40秒程度遅れる可能性があります。

役に立ちましたか?

解決

同様の問題に遭遇しました。Curses は標準出力の出力バッファリングに何かを行っているようです。出力バッファサイズを増やすか、バッファ出力モードを設定していると思います。

バッファ サイズ 0 で stdout を再度開くと、問題が解決される可能性があります。

sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

Curses が戻った後、何かを出力する前にそれを試してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top