Python GUIツールキット個人的な比較のまとめ
Python用に色々とあるGUIライブラリですが、個人的にはQtと迷って結局wxPython(wxWidgetsのPythonバインディング)を使ってますが、もしかしたらQtにしておけばよかったのかなぁと多少後悔もしつつも、wxでかなり満足していたりもします。Qtに多少浮気した結果、Qtの大量の個別インポートは理にかなっているとは思いつつもなんか好きになれず、やっぱりwxの方が性にあっていると思う今日此の頃。
まあ、研究者むけのGUIライブラリのまとめというのはそうなさそうじゃないだろうかということで、使ったことのあるものないものも含めいろいろと聞き及んだことを書いてみます。とは言え、主に汎用GUIライブラリの話なので一般的にも参考になるかと思います。
GUIプログラムが初めてで、いまから始めるならPython3にも対応しているQtがいいんじゃないかと思います。(追記:最近wxPythonもバージョン3がリリースになりPython3にもつかえるようになりました。)MATLABのGUIは酷かったのでそれに比べればwxもQtもpylabすらも非常に快適・簡単です。
汎用GUIライブラリ
wxPythonをつかって作られたソフトウェアのリストにはBittorrentとかgui2py、wxGladeなんかがあります。WikipediaにはDropboxとかGoogle DriveもwxPythonを使っているとありますね。Dropbox自体Pythonで作られたという話は有名だけど、GUIにwxPython使ってたのは知らなかったが、本当だろうか。
wxPython is the best and most mature cross-platform GUI toolkit, given a number of constraints. The only reason wxPython isn't the standard Python GUI toolkit is that Tkinter was there first. -- Guido van Rossum
wxはメインで長年つかっているので使い方の連載記事でも始めようかとおもったらPython-izmという素晴らしいサイトがすでにあり、基本がしっかり押さえられているようなので、やるなら中級編とか応用編かなぁ。需要ありますか?コメント欄かTwittterなどに要望があれば検討します。。
PyQtをつかって作られたソフトはかなりたくさんある。なかでもPython用IDEのNinjaってのが最近きになる。
以下、汎用じゃないもの。ウィンドウィングとイベントハンドリングのサポート+アルファ。
もともとはインテルが開発したコンピュータヴィジョンのライブラリがオープンソース化したもの。監視カメラとか顔認証とかリアルタイムで画像解析が必要な用途に特化していてC/C++で非常に速い。安いウェブカメラつなげて遊ぶと楽しい。highguiを使うとnumpyアレイを簡単にOpenGLのウィンドウに表示できて、マウスやキーボードの入力のイベントを捕まえてコールバックファンクションでいろいろできるので画像解析メインな場合はこちらがおすすめ。最近のバージョンではcv2というPythonバインディングがとってもnumpyフレンドリーで、APIもPythonicな感じになって改善されたので昔のOpenCVのCのプログラム書いているような感じがしなくなった。PILやScipyでできるような画像解析は大抵OpenCVでもできる。
バージョン2.4.9から3Dビジュアリゼーション用のモジュール‘viz’というのが追加になってますね。内部的にVTKを使っているようです。ドキュメンテーションから察するにC++からしかまだ使えないようです。VTKはデータの3Dレンダリングに非常にパワフルだけどちょっと難しいというかパイプラインを構築するのがめんどくさいので、全部の機能はいらないけど、簡単に使えるようなハイレベルなラッパーは便利そう。Pythonバインディングがきたらうれしいな。
使ったことないもの
Frets on Fireというギター・ヒーローのクローンみたいなゲームもPyGameでできているそうです。
PyGameをもとにいろいろなライブラリを組み合わせて作られたクロスプラットフォームな汎用GUIライブラリ。研究者が作っている。ウィンドウズ・マック・LinuxはもちろんiPhoneやAndroidまでサポートする。Androidのサポートはpython-for-android上で動かすことで実現している。Java覚えなくともPythonでAndroid用にアプリが一応かける。グラフィックスはOpenGL ESをベースにしているので速い。もちろんタッチ入力もサポート。Python3に対応しているのもプラス。OpenGL ESサポートというのも大きいし、割りといいのでは。年々少しずつ使用例を聞く頻度が増えている。とくにAndroidやiOSへPythonを普及するという意味で、GuidoもPyCon2014でおすすめしているので、これから来るかもしれない。
kivyを使ってAndroidアプリを作るチュートリアル(英語)のコードを見ると簡単そう。Javaにアレルギーがある人(私)はいいのでは。
« ジェローム・アニトンって誰? | トップページ | matplotlibが最近どんどん使いやすくなっている。 »
「学問・資格」カテゴリの記事
- ウイルスを殺すのは簡単。人に無害でやるのが難しいの!! 二酸化塩素「こう?えい!」(2020.03.11)
- 老化はエピジェネティクスな影響が積り、スプライシングに影響を与えるのかも(2017.11.20)
- シネッセンス細胞がアツい。不老不死とハゲの治療が同時に可能か?(2017.11.18)
- 古めの論文でテキスト選択がおかしい時の対処法(2017.09.08)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
「Python」カテゴリの記事
- Noteの記事をPythonでバックアップしといた。(2021.05.05)
- JupyterLabでも好きな外部エディターを使いたい!(2018.05.02)
- ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。(2018.05.02)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)
コメント