wxpythonで簡単な予定管理アプリケーションを作った

さんざんwxGladeとXRC駄目だなどと書いておいてまたwxGladeでアプリケーション書いちゃいました。
wxGladeが4時間で7回落ちた。最高記録だ!

少し前まで、webサーバ上で予定管理のためのごく簡単なアプリケーションを作って使っていて、そのサーバが使えなくなったのでデータベースだけを保存したまま数ヶ月。サーバ借りるのも面倒だし代替のアプリケーションをデスクトップアプリケーションとして作ってしまおうと思いwxPythonでフロントエンドを作りました。

ファイルは以下の2つ。
wxscheduleapp.pyw 直
wxscheduleapp.xrc 直

起動時に同じディレクトリにschdule.sqlite3があるかどうか調べて無い場合は作成します。

ちょっとした問題

スクリーンショットウィンドウの左上に出ている謎のテキストボックス。この場所にはコントロールを配置していないはずなので描画されている理由が分からない。wxGladeのプレビューでは正しく描画されるのだが・・・。試しに、wxFrame上にコントロールを何一つ配置せずに表示させてみてもテキストボックスだけは表示されるのでXRCが何かしているのではないかなーと予想。暇なら後で調べるかもしれない。

作るのに5時間かかった。ぶっちゃけこの程度のアプリならC#とかAccessなら1時間もあれば組めるんだろうなあとか。

  • GUIレイアウトを保存せずに作業していたらwxGladeが落ちた上に、データのレストアがかからず全部やり直しに
  • 静的な言語と違ってGUIコントロールクラスのメソッド補完がまともにきかないので自分で調べなければならない
  • wxPythonの公式リファレンスがまるで使い物にならない。メソッドの引数の型、返り値すら書かれていない。発生されうるイベントについてはそもそも載っていない

の三重苦で長引いた。GUIプログラミングではメソッド補完って大事だね。全部覚えてられないから。

wxPythonのドキュメントとXRCの挙動が微妙なのもアレなのだがベースになっているwxWidgets自体もネイティブのルックアンドフィールを実現とかいいながらMacで開発するとテキストボックスがまともに日本語を扱ってくれない(日本語入力時に1文字タイプするごとにテキストがガタガタと上下に動く)とかプラットフォームによって面倒なことになるしhttp://d.hatena.ne.jp/etopirika5/20100612を読んでQtやろうかなあ。とか思い始めた次第。