cursesのpanelには独特のクセがある。window/padには謎のクセがあるにつづいて。
成果物
情報源
Panel
panelはwindowを複数扱うとき、そのZ軸について管理する。
[newwin]は重ね合わせるとき[overlay]せねばならない。[subwin][]はそれを自動化してくれる。ただしZ軸の順序は管理できず、描画した順で上書きされる。panelはその順序を管理してくれる。コードを分離する観点から、panelを使ったほうがよい。
なお、panelはwindowでのみ使える。padは使えない。new_panelにpadを渡すとエラーになる。
API
- 生成: new_panel
- 更新: update_panels
- Z軸
- X,Y軸
- show/hide
- Windowセッター/ゲッター
update_panels
パネルを操作したらとにかくupdate_panelsすること。さもなくば描画されない。
move
キー入力に応じてパネルを1ずつ移動させたい。このときパネル(ウインドウ)の現在位置を知りたい。それらしきAPIはつぎのとおり。
結論からいうとgetbegyxがそれである。
APIのうちmoveについて。これはwindow.mvwinのラッパーである。情報源
window.mvwinはウィンドウの左上角を移動させる。そしてgetbegyxはウインドウの左上角を取得する。
それぞれ座標取得系のちがいは以下のとおり。
API | 概要 |
---|---|
getbegyx | ウィンドウの左上角の座標を返す。 |
getyx | ウィンドウの左上角からの相対座標を返す。 |
getparyx | 親ウィンドウを基準にした左上角の座標を返す。親なしなら(-1,-1) |
getmaxyx | ウィンドウの高さ,幅を返す。 |
getsyx | 仮想画面カーソルの現在座標を返す。leaveok=True なら(-1,-1) |
所感
クラス設計がわかりにくい。各クラスやメソッドの関係性がわかりにくい。1つずつメソッドを使って確認せねばならない。つらい。もっと簡潔にまとめてくれ。
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 5.4.83-v7l+ #1379 SMP Mon Dec 14 13:11:54 GMT 2020 armv7l GNU/Linux