PythonからCursesライブラリを使ってみた
CURSESライブラリ(多分今はlibncurses)というライブラリでテキスト画面を制御付きであつかうもので、端末設定のTERM変数に依存します。
TERM変数は、古いシステムでは/etc/termcapまたはterminfoディレクトリ以下に、新たしいシステムでは/usr/shear/terminfo に置かれた定義に従って制御エスケープシーケンスを読み取って動作します。
一般的なテキストベースのフルスクリーンエディタ等で利用されています。
これを、Pythonで使うには
import curses
で使用できます。
Windows Pythonでは・・・
pip install windows-curses
で使用できるようになるようです。
使用目的
ちょろっと、UIを作るのに有効です。
テストプログラム
curses_test.py
#!/usr/bin/python3
import curses as cs
stdscr=''
def init():
global stdscr
stdscr=cs.initscr()
cs.noecho()
cs.cbreak()
stdscr.keypad(True)
def main():
global stdscr
init()
stdscr.addstr(10, 20, '-')
stdscr.refresh()
c = stdscr.getkey()
while c != 'e':
stdscr.addstr(10, 20, c)
stdscr.refresh()
c = stdscr.getkey()
cs.endwin()
try:
main()
except:
cs.endwin()
このファイルに chmod +x curses_test.py で実行権を与えて
./curses_test.py
で実行します。
終わりたいときは小文字のeで終了するようになっています。
注意!
何らかの原因で、プログラムがendwin()関数を呼ばずに終了してしまった場合は、端末を一旦強制終了して再度開かないといけなくなります。