2010-09-07 5 views
1

Я создал простой gui с проклятиями. Однако, когда меню проклятий закончено, функция печати не печатает ничего на экране до выхода основной программы.Печать python не работает правильно после использования проклятий

В приведенном ниже примере, когда выполняется calc.py, на экран выводится текст «Список каталогов ok» после запуска foo (calcDirs). Если я прокомментирую строку folderSelection.menu(dirs), текст будет напечатан на экране, как обычно. Есть идеи? Я использую 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() 

Edit: кажется, что текст обязательно откладывается, пока программа не завершится. Это может быть отложено на 30-40 секунд.

ответ

1

У меня возникла аналогичная проблема. Кажется, что проклятия что-то делают для выходной буферизации на stdout. Я думаю, что это увеличивает размер выходного буфера или настраивает режим буферизированного вывода.

Повторное открытие стандартного буфера с нулевым размером буфера может его исправить.

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

Попробуйте это после того, как проклятия вернутся, но перед тем, как распечатать что-либо.

+0

спасибо! Это действительно решило проблему. – Pe2

 Смежные вопросы

  • Нет связанных вопросов^_^