zowのプログラムな日々

日々のプログラミングとか

PythonとGUI

tkinterを勉強しているのだが、やはりショボい。GUIの勉強をするにはとても良いと思っているのだけど、使えるパーツが少なすぎるのだ。実用するのには難があると思う。

もちろんtkinterも進化をしていて、昔よりは良くなってるんだと思う。ttkとかtixとか、拡張された実装もあるのでそれなりの物はtkinterだけで作れる気がする。だが圧倒的に情報が無いのである。日本語のではなくて、英語の情報も含めてである。参考に出来るものが殆ど無いのだ。まだサンプルがあればソースコードを読んで試行錯誤もできるのだが、それすら満足にない状態だったりする。厳密に言えばtk自体のサンプルコードは探すと見つかるのだけども、ttkやtixになると途端に少なくなる。いくら見た目がネイティブOSの実装に近くなっているとしても、中身がショボいのでは意味が無い。

結局のところ、tkinterGUIを作るのには物凄く労力がいる事が判った。勉強コストと言うか、情報検索コストが大きいからだ。でも悪いことだけじゃない。GUIを作る基礎というのはtkinterで何となくつかめた気がする。GUIアプリケーションがどういう仕組みなのかが判っただけでも勉強した価値はあったと思う。なにしろ、どういう作り方をしているのかを全く知らない所からスタートしているので、これが解ったと言うのはとてつもなく大きい。

GUIアプリケーションの作り方を大雑把に理解したところで、他のGUIツールキットに乗り換えてみたいと思う。前と違って今なら各GUIツールキットの説明も理解できるだろう。全く違う実装なら別の話になると思うが、恐らく似たような作りになっているはずだ。世の中はそういう風にできている(はずだ)。

で、何を使ってみるかを調べたのだが、主に以下の4つがPythonでは有名みたいだ

  • wxPython: 情報多い(但し2系)。リリースパッケージだとPython2系しか対応していないが、開発版ではPython3に対応している。

wxは2系の頃だったら主流とも言えるぐらいみんな使ってたと思う。3系になってから対応が遅れてるみたいだけども、開発版は3系に対応しているらしい。

  • PyQt:情報多い。Python3対応。
  • PySide:情報それなり。Python3対応。

PyQtとPySideはQtバインディングで、大きな違いはライセンスらしい。PySideの方がライセンスが緩いらしい。

  • PyGTK: 情報少ない。Python3対応?

PyGTKについては日本では人気が無いのかほとんど情報が出てこない。

こんな感じで、Python3でGUIだと、ほぼQt一択みたいな感じになっているみたいだ。PyQtとPySideはそこまで中身に違いはないらしいが、PyQtの方が出来がいいっぽい。

そんな訳でQtを使ってみようと思う。ライセンスは緩いほうがいいと思ってるので、PySideを使ってみるが、不都合が出てきたらPyQtに乗り換える方向で考えてる。