stampa pitone non funziona correttamente dopo l'utilizzo di maledizioni
-
01-10-2019 - |
Domanda
Ho creato una semplice interfaccia grafica con maledizioni. Tuttavia, quando è finito il menu maledizioni la funzione di stampa non stampa nulla a schermo fino a quando le uscite principali del programma.
Nell'esempio seguente, quando calc.py viene eseguito, il testo "Lista Directory ok" viene stampato sullo schermo dopo il foo (calcDirs) viene eseguito. Se io commento la folderSelection.menu(dirs)
riga il testo viene stampato sullo schermo come farebbe normalmente. Qualche idea? Io uso 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()
Modifica Sembra che il testo è necessariamente ritardata fino a quando i termina programma. Si può solo essere ritardato alcuni 30-40 secondi.
Soluzione
mi sono imbattuto in un problema simile. Sembra che le maledizioni fa qualcosa per il buffer di uscita sul stdout. Credo sia aumentando la dimensione del buffer di uscita, oppure modificando la modalità di uscita tamponata.
riapertura stdout con una dimensione del buffer di zero può risolvere il problema.
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
Prova che dopo maledizioni rendimenti ma prima di stampa nulla.