« Unity?? Unity!! ※5/6追記 | トップページ | Ubuntu11.04のシステムモニタのハック »

2011/05/13

Glad3とpythonでのストップウォッチ

これまでstopwatchというアプリを使っていたのだけど、どうもこれが11.04になってからEeePC上では動きがカクカクしているというかスムーズでない。動きがスムーズでないのはtkを11.04で処理する上でのバグに近いのではないかと思うのだけど、それ以外にもtkで作られているアプリの表示が非常にみすぼらしい。
しかしUbuntuで利用できるストップウォッチはこれくらいしかないみたいだ。他に見つけたものもキー操作でスタート・ストップが出来るものがなくて使いにくい。で、既存に無ければ作ってしまえばいいじゃない(C マリー・アントワネット) ということで、作ってみた。

参考にしたページ:
PyGTK: Stopwatch
gstpw
pygtk FAQ
pygtk Tutorial

基本路線:

  • コードはpythonで。Unity環境で動かすのだからgtkを利用する。
  • GUIはGLADE3を使って構築。GUIの構築コードをpythonと分離する。
  • stopwatchと同様にキーボードから開始、停止、クリア等の操作が出来るようにする。
  • 高機能のものは要らないけど、ラップタイム計測位は欲しい。
  • ラップタイム計測の履歴も見たいかな

実現ポイント:

  • timerにはGObjectを使用する。セットはg_id = gobject.timeout_add(10, self.count) だけ。停止させるにはg_id=0にするだけと超簡単。この例だとカウント精度(?)は10msecを指定。EeePC位の非力なPCにはこれ位でないときつい。
  • キーボードショートカットはdef on_MainWindow_key_press_event(self, widget, event):で指定。event.keyvalに入力されたキーが来る。
  • GLAD3で構築したGUIのpythonへの導入は、builder = gtk.Builder()以下の3行が必須。後は必要なインスタンスだけbuilder.get_objectで取得しておく。

現状の問題点

  • 履歴の表示にGtkTextViewを使っただけど、こいつがキーボードからのコピーペーストをうまく出来ない。どころかCtl+Cを押すと履歴が消える始末。一応マウスの右クリックからのコピペは出来るのだが。FAQを見て解決出来そうなのでやってみる予定。
  • メニューバー作っていない。自分には必要ないのだが、勉強のために追加してみる予定。
  • stopwatchのフル互換にはなっていない(Total Lapが分かれていない)。これについてはあまり変更の必要を感じていないので、現状のままという公算が高いかな。

出来上がりはこんな感じ。

Screenshotgtkstopwatch

キーボードからの操作は、
s:開始/停止、z:カウンタリセット、c:履歴のクリア
だけ。

必要パッケージ:
python-gtk2 python-glade2
後は多分デフォで入っているはず。Glad3のファイルを自分で読みたい場合には当然glade3のインストールが必要。
xmlファイルなのでテキストエディタでも開けるけど、理解できるかどうかは別。

以下コード。まずGlade3のファイル。gtkstopwatch.glade

pythonのコード。gtkstopwatch.py

« Unity?? Unity!! ※5/6追記 | トップページ | Ubuntu11.04のシステムモニタのハック »

Ubuntu」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/28800/51657859

この記事へのトラックバック一覧です: Glad3とpythonでのストップウォッチ:

« Unity?? Unity!! ※5/6追記 | トップページ | Ubuntu11.04のシステムモニタのハック »