杀死Python curses程序后终端显示异常

3 投票
5 回答
4470 浏览
提问于 2025-04-16 16:24

我写了一个小程序,用Python语言,并使用了curses库来输出一些屏幕显示。对于我简单的输出来说,这个方法似乎是有效的。我是通过命令行来运行我的Python程序的。

我遇到的问题是,如果我强行结束这个Python程序,终端的显示就会出现问题。比如说: 在我运行Python curses程序之前,输入'ls -al'可以正常显示。 但是在我结束Python curses程序之后,输入'ls -al'就不能正常显示了。

我该怎么做才能在结束Python curses程序后,让我的终端正常显示输出呢?

5 个回答

4

这样初始化curses,它会自动处理清理工作。

class curses_screen:
    def __enter__(self):
        self.stdscr = curses.initscr()
        curses.cbreak()
        curses.noecho()
        self.stdscr.keypad(1)
        SCREEN_HEIGHT, SCREEN_WIDTH = self.stdscr.getmaxyx()
        return self.stdscr
    def __exit__(self,a,b,c):
        curses.nocbreak()
        self.stdscr.keypad(0)
        curses.echo()
        curses.endwin()

with curses_screen() as stdscr:
"""
Execution code plush getch code here
"""
5

如果你使用curses.wrapper,它会为你处理所有的清理工作(和设置)。

8

通常,reset 命令会把你的终端设置恢复到默认值。

撰写回答