• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

curses(python)

date: 2022-01-01 excerpt: pythonのcursesの使い方

tag: python3curses


pythonのcursesの使い方

概要

  • terminal上でインタラクティブなソフトウェアを作れるライブラリ
  • キー以外のマウスなどもハンドルできる
  • viクローンなどを作れる

基本動作

  1. cursesをインポート
  2. curses.initscr()で初期化でscreenインスタンスを得る
  3. screen.keypad(1)でキーパッドを初期化
  4. screen.mousemask(1)でマウスを初期化
  5. screen.getch()でループ待ち受けして処理を行う
  6. 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をフォークして作成した
  • コード

参考

  • curses — Terminal handling for character-cell displays


python3curses Share Tweet