我创建了一个用诅咒的简单GUI。但是,当“诅咒”菜单完成后,打印功能在主机退出之前不会打印任何要屏幕的内容。

在下面的示例中,当运行calc.py时,在运行FOO(Calcdirs)后,将文本“目录列表确定”打印到屏幕上。如果我发表评论 folderSelection.menu(dirs) 文本像往常一样将文本打印到屏幕上。有任何想法吗?我使用Python 2.5

calc.py:

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

folderselection.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对Stdout上的输出缓冲有所作为。我认为它正在增加输出缓冲区大小或设置缓冲输出模式。

重新打开以零缓冲区大小的stdout可以修复它。

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

诅咒返回后,请尝试一下,但在打印任何东西之前。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top