初めに
Pythonによるローカル動作のソフトウェアにおいて、GUI実装には主に3つのライブラリにて実装される場合が多い。
- Qt
- wxWidgets(wxPython)
- Tkinter
あと、そもそもwebアプリケーション的に作成し、GUIはWebブラウザ側にお願いするという方法もある。そうなると、以下のライブラリが考えられる。
- Django
- Flask
Djangoは機能が多く、ローカル動作のソフトウェアで使用するには不要であると考えるため、今回はFlaskに絞る。
Qt
QtはC++で実装されたオープンソースである。Pythonによる使用には主に以下のライブラリを使用することが多い。
PyQtの場合は、ネット上の情報量も多く、使用しているエンジニア人口も多い。
- PyQt
- pyside
QtはGPL、LGPL、商用ライセンスの3つが提供されている。PyQtはGPL、pysideはLGPLで提供され、それぞれに商用ライセンスがある。
商用ライセンスを使用しなくても、GPLおよびLGPLは特に商用利用を禁止していないが、GPLはソースコードの公開義務があるため、製品に採用するのは難しい。商用ライセンスは約●●万円であるため、引き合いが多くないとうま味はない。
wxWidgets
wxWidgetsは、プラットフォーム依存しないライブラリである。フォームをOS内蔵のものを使用するため、ソースコードの使いまわしが可能である。
また、「WxFormBuilder」を使用すると、ドラッグ&ドロップにてGUIを作成でき、実装工数が削減できる。しかし、作成には癖があり、それに対する情報も少ないため、一度ハマると抜け出すのが難しい。
Tkinter
Tkinterはpython標準に入っているGUI用ライブラリである。基本的には表のようにGUIを作成するようで、比較的プログラミングしやすい。他と違ってドラッグ&ドロップでGUIを作成する支援ソフトはないが、ハマるポイントも少ないから工数がむやみに増えない。デザインを気にする必要がなければ採用すると良い。
Flask
これはwebアプリケーション用のフレームワークである。デザインに重きを置いた場合、Web系の方がかっこいいので、こちらを採用した方ばいい。GUIサイドはJavascript実装になることが考えられるため、必要な知識は多いが、フレームワークを上手く使えば工数削減に繋がる。ネットワークに繋がっていること前提であればCDNでライブラリを引っ張っても良い。jinjaテンプレートを使っても良いが、可能であればGUI側はJavascriptで記載した方が管理上ごちゃごちゃしない。