Python 调用 curses wrapper 后打印混乱

Python print messed up after calling curses wrapper

我在 Python 中遇到 curses 库问题。考虑以下代码:

def main(stdscr):

    print('Hello World!!')
    create_screen()
    curses.endwin()

if __name__ == "__main__":
    curses.wrapper(main)

问题是 "print" 函数打印的每个文本甚至在调用 "create_screen()" 函数之前就被弄乱了 "curses.initscr()"

你的程序使用curses前后都可以正常使用printinput。此外,您不必将所有代码都放入 main,也不必将 main 函数传递给 cursesmain 和其他函数一样只是一个函数。看看这个简单的例子:

import curses, time

def incurses(stdscr):
    stdscr.addstr(0, 0, "Exiting in ")
    stdscr.addstr(2, 0, "Hello World from Curses!")
    for i in range(5, -1, -1):
        stdscr.addstr(0, 11, str(i))
        stdscr.refresh()
        time.sleep(1)
    curses.endwin()

def main():
    print('Hello World!!')
    choice = input("Start Curses Program? ")
    if choice == "yes":
        curses.wrapper(incurses)
    print("After curses")

if __name__ == "__main__":
    main()

这将打印并要求用户输入,然后显示一个诅咒屏幕,然后返回到 "normal" 打印模式。