Python Print не работает правильно после использования проклятий

StackOverflow https://stackoverflow.com/questions/3657103

  •  01-10-2019
  •  | 
  •  

Вопрос

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

В приведенном ниже примере, когда Calc.py работает, текстовый список «Список каталогов OK» напечатан на экран после запуска FO (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()

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

Это было полезно?

Решение

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

Вокруг STDOUT с размером буфера нуля может его исправить.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top