Pregunta

He creado una interfaz gráfica de usuario sencilla, con maldiciones. Sin embargo, cuando se termina el menú maldiciones la función de impresión no se imprime nada a la pantalla hasta las principales salidas del programa.

En el siguiente ejemplo, cuando se ejecuta calc.py, el texto "Directorio de ok" se imprime en la pantalla después de que el foo (calcDirs) se ejecuta. Si comento hacia fuera la línea de folderSelection.menu(dirs) el texto se imprime en la pantalla como lo haría normalmente. ¿Algunas ideas? I uso pitón 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()

Editar Parece que el texto está necesariamente se retrasó hasta las termina el programa. Que sólo puede ser retrasado algunos 30-40 segundos.

¿Fue útil?

Solución

me encontré con un problema similar. Parece que las maldiciones hace algo al búfer de salida en la salida estándar. Creo que está aumentando el tamaño del búfer de salida, o establecer el modo de salida con buffer.

reapertura stdout con un tamaño de búfer de cero puede solucionarlo.

sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

Trate de que después de maldiciones rendimientos pero antes de imprimir nada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top