pitón no funciona correctamente después de usar maldiciones
-
01-10-2019 - |
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.
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.