python打印在使用诅咒后无法正常运行
-
01-10-2019 - |
题
我创建了一个用诅咒的简单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)
诅咒返回后,请尝试一下,但在打印任何东西之前。
不隶属于 StackOverflow