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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top