Python: проклятия не показывают печатный текст, пока не вызывается getkey()

У меня есть код Python, который выводит на экран текст. Но если я опущу stdsrc.getkey() Функция ничего не печатает на экран.

import curses

def write(stdscr):

    stdscr.clear()
    stdscr.refresh()

    stdscr.addstr("this is a test string")
    stdscr.refresh()

def main():
    curses.wrapper(write)

if __name__ == '__main__':
    main()

Приведенный выше код не показывает ничего на экране, но если я изменю его, как показано ниже, он напечатает "this is a test string" до терминала

import curses

def write(stdscr):

    stdscr.clear()
    stdscr.refresh()

    stdscr.addstr("this is a test string")
    stdscr.refresh()
    stdscr.getkey()

def main():
    curses.wrapper(write)

if __name__ == '__main__':
    main()

1 ответ

Ты используешьcurses.wrapperкоторый сбрасывает окно терминала после выхода. Без него существует очень быстро, окно сбрасывается и вы ничего не видите. заставляет ждать ключа и у вас есть время увидеть изменение в окне. Если вы поставитеtime.sleep(5)вместоgetkeyу вас будет аналогичный эффект. Если вы не используетеwrapper, но позвониwriteнепосредственно, вы также увидите изменение в окне.

Другие вопросы по тегам