cursesライブラリの使い方を記載します。
Table of Contents
1 import
cursesをインポートします。
import curses
2 初期化処理
- curses.initscr()でcursesを初期化し、スクリーンを制御するオブジェクトを取得します。
- curses.noecho()でキーボード入力によるエコーを無効にします。
stdscr = curses.initscr() curses.noecho()
3 描画処理
- stdscr.clear()でスクリーンをクリアします。
- stdscr.addstr()でスクリーンに文字列を追加します。様々な位置に文字列を描画する為に、stdscr.clear()を実行する前に複数回実行することになります。
- stdscr.clear()でスクリーンを描画します。
stdscr.clear() stdscr.addstr(y, x, string) stdscr.refresh() time.sleep(1)
4 終了処理
初期化処理と逆のことを実行します。これは例外発生時にも実行される必要があります。実行されない場合は端末の表示が崩れ、端末の表示を直すのにstty saneを実行する必要があります。
- curses.echo()でキーボード入力によるエコーを有効にします。
- curses.endwin()でcursesを終了します。
curses.echo() curses.endwin()
5 サンプルコード
キーボードでCtrl + Cが押されるか、10秒経過するまで1秒おきに文字列を描画します。
#!/usr/bin/env python import curses import time if __name__ == "__main__": try: stdscr = curses.initscr() curses.noecho() for t in range(0, 10): stdscr.clear() stdscr.addstr( 0, 0, 'Program will be terminated after %s seconds' % (10 - t)) stdscr.refresh() time.sleep(1) except: # Exception by Ctrl + C pass finally: curses.echo() curses.endwin()