Python で Curses のサンプルを書いてみた
さて、 curses が入ったところで、早速使ってみようと思って下に目を通す
Python で Curses プログラミング
http://www.python.jp/doc/nightly/howto/curses.html
そこに 「curses.wrapperを使っとくと何かと捗るよ」的な記述がある
だけど具体的なサンプルがない
試しに何も考えずに関数を curses.wrapper に渡してみると、
「引数1個与えたいんだけど」的な感じでエラーになった
[mitsuaki@localhost curses_test]$ cat cursestest.py # -*- coding: utf-8 -*- import curses def curses_main(): pass curses.wrapper(curses_main) [mitsuaki@localhost curses_test]$ python cursestest.py Traceback (most recent call last): File "cursestest.py", line 5, in curses.wrapper(curses_main) File "/usr/local/lib/python2.7/curses/wrapper.py", line 43, in wrapper return func(stdscr, *args, **kwds) TypeError: curses_main() takes no arguments (1 given) [mitsuaki@localhost curses_test]$
引数を1個与えると、無事呼べたようです
こういうのって Pythonista のかたは REPL で確認しちゃううですか?
[mitsuaki@localhost curses_test]$ cat cursestest.py # -*- coding: utf-8 -*- import curses def curses_main(args): pass curses.wrapper(curses_main) [mitsuaki@localhost curses_test]$ python cursestest.py [mitsuaki@localhost curses_test]$
やっと使えるようになったのでサンプルを作ってみる
ちなみに console を密接に使うせいなのか、 試した限り Eclipse の pydev ではまともに動かせなかった
なのでこのサンプルはコマンドラインからの起動でしか試していないです
curses の目的からするとアレなサンプルですが、
1行読み込んでそれをどんどん下に追加していくプログラムです
"q" で終了します
# -*- coding: utf-8 -*- import curses def curses_main(args): w = curses.initscr() curses.echo() while 1: w.addstr(0, 0, ">") w.clrtoeol() s = w.getstr() if s == "q": break w.insertln() w.addstr(1, 0, "[" + s + "]") curses.wrapper(curses_main)
https://gist.github.com/1885105
これで何とか使い始められそうだ~