pythonのcursesの使い方
概要
- terminal上でインタラクティブなソフトウェアを作れるライブラリ
- キー以外のマウスなどもハンドルできる
- viクローンなどを作れる
基本動作
curses
をインポートcurses.initscr()
で初期化でscreen
インスタンスを得るscreen.keypad(1)
でキーパッドを初期化screen.mousemask(1)
でマウスを初期化screen.getch()
でループ待ち受けして処理を行うcurses.endwin()
でcursesを終了
アクティブなターミナルのサイズを得る
MAX_COLUMNS, MAX_LINES = os.get_terminal_size(0)
各関数
screen.addstr
- スクリーン上に文字を出力する関数
screen.addstr(height, width, "text", curses.A_REVERSE)
- height, widthはscreenの左上を原点とする絶対座標
- screenのサイズを超えると例外が起きる
- “text”は出力する文字であるが、日本語などのnon-asciiは二文字分になる
- curses.A_REVERSEなど、テキストの表示方法を決めることができる
screen.getch()
- スクリーン上のイベントを取得する関数
event = screen.getch()
if event == ord("q"):
...
- キーが入力されたら、なにを発生させるかを定義することができる
作成したソフトウェア
perspective-ls
- lsの網羅性が低かったので作成した
- マウスとキーを利用してハイライトしているファイルをページャーで中身を確認したり、vimで編集したりできる
- コード
japanese-matrix(jmatrix)
- cmatrixの日本語版
- ウォールペーパーとして使用できる
- matrix-cursesをフォークして作成した
- コード