2010-09-07 21 views
1

J'ai créé un gui simple avec des malédictions. Cependant, lorsque le menu des curses est terminé, la fonction d'impression n'imprime rien à l'écran tant que le programme principal n'est pas sorti. Dans l'exemple ci-dessous, lorsque calc.py est exécuté, le texte "Liste des répertoires ok" est imprimé sur l'écran après l'exécution de foo (calcDirs). Si je commente sur la ligne folderSelection.menu(dirs) le texte est imprimé à l'écran comme il le ferait normalement. Des idées? J'utilise Python 2.5L'impression python ne fonctionne pas correctement après avoir utilisé les malédictions

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: Il semble que le texte est retardé jusqu'à ce que le programme nécessairement se termine. Cela peut juste être retardé de 30 à 40 secondes.

Répondre

1

J'ai rencontré un problème similaire. Il semble que les malédictions font quelque chose pour la mise en mémoire tampon de sortie sur stdout. Je pense que cela augmente la taille de la mémoire tampon de sortie, ou le mode de sortie mis en tampon.

Réouvrir stdout avec une taille de tampon de zéro peut le réparer.

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

Essayez cela après le retour des malédictions mais avant d'imprimer quoi que ce soit.

+0

Merci beaucoup! Cela a effectivement résolu le problème. – Pe2