杀死 pythoncurses 程序后终端显示损坏

发布于 2024-11-03 05:11:06 字数 248 浏览 2 评论 0原文

我用 python 编写了一个小程序,并使用curses 库输出了一些屏幕显示。对于我的简单输出来说,这似乎有效。我从命令行运行 python 程序。

我的问题是,如果我终止 python 程序,终端将无法正确显示。例如: 在运行 pythoncurses 程序之前,“ls -al”正确显示 杀死 pythoncurses 程序后,“ls -al”无法正确显示。

在终止 pythoncurses 程序后,我该怎么做才能使终端正确显示输出?

I wrote a small program in python and outputted some screen display using the curses library. For my simple output this seems to work. I run my python program from the command line.

My problem is that if I kill the python program the terminal doesn't properly display. For example:
'ls -al' displays properly before I run my python curses program
'ls -al' does not display properly after I kill the python curses program.

What can I do to make my terminal display output properly after I kill my python curses program?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

千仐 2024-11-10 05:11:06

通常,reset 命令会将您的终端设置重置为默认值。

Usually the reset command will reset your terminal settings to default values.

遇到 2024-11-10 05:11:06

如果您使用curses.wrapper,它将为您处理所有清理(和设置)。 http://docs.python.org/library/curses.html#curses.wrapper

If you use curses.wrapper, it will handle all the cleanup (and set up) for you. http://docs.python.org/library/curses.html#curses.wrapper

无所的.畏惧 2024-11-10 05:11:06

按以下方式初始化诅咒,它将处理清理工作。

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
"""

Initialize the curses the following way, it will handle a cleanup.

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
"""
别靠近我心 2024-11-10 05:11:06

注册一个信号处理程序来取消初始化curses。

Register a signal handler that will uninitialize curses.

你的心境我的脸 2024-11-10 05:11:06

我认为你应该使用curses.endwin()。它恢复终端窗口...
事实上,如果你在程序关闭后不调用它,终端将显示所有内容,就像在诅咒窗口中一样......

I think you should use curses.endwin(). It restores the terminal window...
In fact if you don't call it after program is closed terminal will show everything like it is in the curses window...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文