3

私はPythonで小さなプログラムを作成し、cursesライブラリを使用して画面表示を出力しました。私の単純な出力では、これは機能しているようです。コマンドラインからPythonプログラムを実行します。

私の問題は、Pythonプログラムを強制終了すると、ターミナルが正しく表示されないことです。次に例を示します。Pythoncursesプログラムを実行する前に「ls-al」が正しく表示されます。pythoncursesプログラムを強制終了した後、「ls-al」が正しく表示されません。

Python cursesプログラムを強制終了した後、ターミナルに正しく出力を表示するにはどうすればよいですか?

4

5 に答える 5

7

通常、このresetコマンドは端末設定をデフォルト値にリセットします。

于 2011-04-26T03:47:07.133 に答える
6

curses.wrapperを使用すると、すべてのクリーンアップ(およびセットアップ)が処理されます。http://docs.python.org/library/curses.html#curses.wrapper

于 2011-09-27T19:32:18.703 に答える
4

次の方法で呪いを初期化します。クリーンアップを処理します。

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
"""
于 2012-06-14T01:58:22.523 に答える
1

cursesを初期化解除するシグナルハンドラーを登録します。

于 2011-04-26T03:48:21.703 に答える
1

私はあなたが使うべきだと思いますcurses.endwin()。それはターミナルウィンドウを復元します...
実際、プログラムが閉じられた後にそれを呼び出さない場合、ターミナルはそれが呪いウィンドウにあるようにすべてを表示します...

于 2015-06-14T12:34:08.740 に答える