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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top