目次:
まえがき
Python3によるパスワードマネージャ(PWM)を制作するにあたってこの記事ではGUIについてまとめたものである。またPython3に熟達することも目下の目標の1つである。アプリ制作にあたって選択しなければならないことは多い。 GUIについてだけでもPython3からGUIを構成するするにはいくつか方法あるし、そもそもどの環境下で稼働させるかという点でも選択肢を考えないといけない。
今回はPython3でのGUIという観点で何ができて、何ができないのかをまとめていこうと思う。
変更履歴
2020/02/29: 新規作成
Python3で選べるGUIの選択肢
選択肢は大きく分けて以下の4つ。
- tkiner
- kivy
- wxWidgets -> wxPython
- QT5 -> PyQT or pyside2
tkinter: 言わずと知れたPython3の標準ライブラリ
メリット
初めから入っているので環境構築がちょっと楽。
Tcl/TkフレームワークをPython3から利用するモジュールなのでTcl/Tkの経験ああればのさら良い。
Tcl/Tk自体が性能が良い。
デメリット
少し試した結果今のところ(2020/02下旬時点)Macでうまく動かせないので却下。
ライセンス
オープンソース
kivy: Python用マルチタッチアプリケーション開発のためのライブラリ
専用のkv言語というJSONのようなCSSのような言語で部品を記述していくイメージ。.
初版が2011年と若い。
メリット
- kvファイルで別のファイルに記述できるのでコードが見やすいのかもしれない。
- Pythonだけでも記述可能。
- iOSやAndroidもサポートしている。
- マルチタッチを実現できるのはこれだけ、かもしれない。
デメリット
- KV言語を覚えないといけない。簡単だとは思う。
- 日本語のドキュメントが少ない。
ライセンス
MIT
wxWidgets: OSに調和したコンポーネントを表示できる
C++で書かれている。Pythonから利用する場合はwxPythonを利用する。
メリット
- 動作が早い。
- 移植性が高い。
- OSに調和したコンポーネントを表示できる。
- モダンなデザインが可能。
- 専用のIDEでドラッグアンドドロップで開発できる。
デメリット
- 中間言語がないためコード自体は直感的な開発は他より劣る。
ライセンス
wxWindowsライセンス、LGPLにいくつかの条件をつけたもの。
QT5: キュート
古くからある、このQTとTcl/Tkは早い段階からでPython3と互換がある。QtツールキットのPythonバインディングは2つある。PyQtとpyside2である。C++で作られている。また、専用の「Qt Creator」というエディタがる。
メリット
- 動作が早い。
- QtCreatorで簡単に作れそう。
- モダンなデザインが可能。
- 中間言語の利用が可能。
- ライセンスが豊富。
- ドキュメントは多い。
デメリット
- 他のと比べて思いつかない
ライセンス
LGPLv3とGPLv2と商用ラインセンス
Python3でのGUIの結論はQT5
ざっと調べた(見た)限りではQT5が良いんじゃないかと思う。最終的なゴールとしてはパスワードマネージャを作れれば良いので、専用のIDEであるQT Creatorを使っていこうと思う。好きにウィジェットを配置してみて、どんなコードになっているのかをみながら学ぶ形でいくぐらいが丁度良いじゃないだろうか。
正直GUIはこんな感じでやっていく。
Qtとは
とりあえずQT5がどんなものなのかざっとまとめてみる。
Qt公式サイトhttps://www.qt.io/
完全なクロスプラットフォームのソフトウェア開発フレームワークであるQtは、様々なUIエレメント、C++ライブラリ、様々なツールが100%統合された開発環境(IDE)で構成され、多様なプロジェクトのソフトウェア開発に必要なものが一式そろっています。だったら使ってみたい、そう思いませんか?
https://www.qt.io/
とにかく公式サイトを見ればだいたいわかるのだが、一番魅力的なのは「ドラッグ&ドロップツール」で簡単に作れること。
詳しくない私からするとこれが一番の特徴。どんな環境でも動くので、できればUbuntu用とMacOs用で作ってみたい。それほど難しくない雰囲気だけはしている。
C++を使えるともっとパワフルでゴージャスなGUIアプリができることも一応挙げておこう。私はPython3しか使えないので、実際には「しか使いたくない」のであまり関係ないが。
そもそもGUIにする利点は何か?
見やすい。それだけだ。
- だが考えて欲しい。見やすいとはつまり分かりやいということだ。
- 分かりやすいと伝わりやすい。
- 伝わりやすいと消費する時間が少なくて済む。こんな良い事はない。
- しかも実行結果をいくつも並べてみれる。こんな良い事はない。
- CLIと違ってボタン1つで実行できる。こんな良い事はない。
pyside2とは
という事でPython3でGUIを作るわけだが、PythonからQtを使うにはpyside2を使うことになる。pytside2はQtが作っているのでQtとPythonの間のことは安心して無視できる。 自分がPythonなら間に入る中間業者はいない、非常にクリーンな環境である。
他にPyQTというものがあるがもうこれ以上調べることに時間は使いたくないので、簡単にいうとPyside2をQTがやってるからPyQtは選ばなかった、のである。
むすび
Pyside2一択。
コメント