【问题标题】:python print not functioning correctly after using curses使用诅咒后python打印无法正常工作
【发布时间】:2010-09-07 08:41:42
【问题描述】:

我用诅咒创建了一个简单的 gui。但是,当curses 菜单完成时,打印功能不会在主程序退出之前将任何内容打印到屏幕上。

在下面的示例中,当运行 calc.py 时,在 foo(calcDirs) 运行后将文本“目录列表 ok”打印到屏幕上。如果我注释掉folderSelection.menu(dirs) 行,则文本会像往常一样打印到屏幕上。有任何想法吗?我使用 python 2.5

calc.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 秒。

【问题讨论】:

    标签: python curses python-2.5


    【解决方案1】:

    我遇到了类似的问题。似乎 curses 对标准输出上的输出缓冲做了一些事情。我认为这是增加输出缓冲区大小,或设置缓冲输出模式。

    重新打开缓冲区大小为零的标准输出可能会修复它。

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

    在 curses 返回之后但在打印任何内容之前尝试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多