ホーム DoRuby [python]プロトタイプをcursesで

[python]プロトタイプをcursesで

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

みなさんはプログラムのアイデアが浮かんだとき、ロジックはできたのに、それを表現するUIが書けなくて悩んだ事はありませんか? GUIは手間がかかるし、文字だけだと味気ない。 そんなときにはcursesです。

cursesはターミナル上の操作を行うライブラリです。 windowの様に画面に枠を書いたり、文字に色を付けたりなどが簡単にできる様になっています。GUIほどきれいなものはできませんが、ただの文字よりは洗練されたUIが作れます。 今回はpythonでターミナルUIを使ったチャットプログラムをつくってみました。 ソースはこちら。chat.py

python2.6.1で動作確認しています。

使い方は$ python chat.py -s

でサーバ起動、$ python chat.py

でクライアント起動です。 起動すると下図のような画面が表示されます。

枠線と色がついただけですが、けっこう見栄えがすると思いませんか?

さて、cursesを使うときのきもの部分をちょっと解説します。

class CursesWindow():

  def __init__(self,host=”):

    locale.setlocale(locale.LC_ALL,”)

    curses.wrapper(self.loop,host)

コンストラクタで、curses.wrapperを呼び出しています。

このラッパーがなかなかのやり手で、必要な初期化処理をしてくれた上に、 例外が発生したときにターミナルの状態を復元して終了してくれます。 これをせずに、cursesを使ったプログラムが例外で落ちると、ターミナルに文字を打ち込んでも表示されなくなったりして、大いに困ります。

localeの設定は日本語の表示で必要らしいです。よくわかりませんが、おまじない。

wapperに渡しているloopはメイン処理を行う関数です。 中でループをまわしてチャットの受信、送信処理を行っています。

準備はこれで終わりです。なんと簡単!。

あとはloop関数にわたってきたWindowオブジェクトを使って、枠線を書いたり文字を書いたりします。

このようにcursesを使うとGUIには劣るものの、そこそこ見栄えのいいUIがさらっと作れます。皆さんもぜひ一度お試し下さい。

記事を共有

最近人気な記事