Python проклинает вопрос - PullRequest
       21

Python проклинает вопрос

3 голосов
/ 26 апреля 2011

Я написал небольшую программу на python и вывел на экран несколько экранов, используя библиотеку curses.Для моего простого вывода это похоже на работу.Я запускаю свою программу на Python из командной строки.

Моя проблема в том, что если я убью программу на python, терминал не будет отображаться правильно.Например: «ls -al» отображается правильно перед тем, как я запустил программу python curses «ls -al» не отображается должным образом после того, как я уничтожил программу «python curses».

Что я могу сделать, чтобы вывод моего терминала выводил на экранправильно после того, как я убью свою программу python curses?

Ответы [ 5 ]

6 голосов
/ 27 сентября 2011

Если вы используете curses.wrapper, он будет обрабатывать всю очистку (и настройку) за вас.http://docs.python.org/library/curses.html#curses.wrapper

6 голосов
/ 26 апреля 2011

Обычно команда reset сбрасывает настройки терминала до значений по умолчанию.

4 голосов
/ 14 июня 2012

Инициализируйте проклятия следующим образом, он выполнит очистку.

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
"""
1 голос
/ 26 апреля 2011

Зарегистрируйте обработчик сигнала , который неинициализирует проклятия.

0 голосов
/ 14 июня 2015

Я думаю, вы должны использовать curses.endwin(). Восстанавливает окно терминала ...
На самом деле, если вы не вызовете его после закрытия программы, терминал покажет все как в окне проклятий ...

...