Pythondruck funktioniert nicht richtig nach Flüche mit
-
01-10-2019 - |
Frage
Ich habe eine einfache gui mit Flüchen erstellt. Wenn jedoch die Flüche Menü der Druckfunktion drucken, etwas zu Bildschirm nicht bis in dem Haupt Programm beendet ist beendet.
Im Beispiel unten, wenn calc.py ausgeführt wird, wird der Text „Verzeichnisliste ok“ gedruckt auf den Bildschirm nach dem foo (calcDirs) ausgeführt wird. Wenn ich den Text die Zeile folderSelection.menu(dirs)
kommentieren Sie wird auf dem Bildschirm ausgegeben, wie es normalerweise tun würde. Irgendwelche Ideen? Ich Verwendung 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()
Edit: Es scheint, dass der Text unbedingt bis das Programm beendet wird verzögert. Es kann nur ein paar 30-40 Sekunden verzögert werden.
Lösung
Ich lief in ein ähnliches Problem. Es scheint, dass Flüche machen etwas mit der Ausgabe-Pufferung auf stdout. Ich denke, es ist die Ausgangspuffergröße zu erhöhen, oder gepufferte Ausgabemodus einstellen.
Wieder stdout mit einer Puffergröße von Null kann es beheben.
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
Versuchen Sie, dass nach Flüche kehrt aber, bevor Sie etwas drucken.