PythonのGUIライブラリ18選とEXE化3選まとめ(ライセンス付)

台湾出張生活がとうとう一ヶ月経過して、Amazonで購入した30日間のSIMの有効期限が切れてしまった……。

そして週末は基本的にホテルの自室から出ていないので、何もネタが無い。

 

 

とうとうSIMが切れると同時に僕の日記のネタが切れてしまった……

ホテルから出ないので最初の週こそプールに行ってみたが、今じゃ完全なニート。

 

ニートしながら「ファイナルファンタジー7」と「ドラゴンクエストV 天空の花嫁」で遊んでた。

 

 

結婚相手は「フローラ」一択

もともとフローラ花嫁候補イベントに参加してたのに、迷う理由が全く分からない。浮気じゃん。

 

花嫁論争が未だ繰り広げられているが、実世界でビアンカのように幼馴染+デボラのような性格な相方を選んだ僕としては、

 

現実世界を加味しても「フローラ」一択。

 

ビアンカ派の「ビアンカは山奥の村で独身のまま暮らすから可哀想」とか糞理由じゃん。

自分の人生一度だから!人との為に生きようと思った現実世界はマジつまらん。

「ティファ」「エアリス」論争は、単なるデートだから両方でイイわww

という事で日記を書かずにゲームをしていたので、日記ネタも無くなった。

 

そうだ!ゲームのように過去の日記をリメイクしたら良いんじゃない?
 

「FF7」「DQ5」なんて何度リメイクされたことか。デボラとかエメラルドウェポンとか誰やねん。

 

で、今回はこれ。

Python で GUI作成ライブラリまとめ(TkInter、Qt、Kivy、WxPython)
毎年、仕事量が1.5倍ぐらい増えてる。もう一つの課レベルの仕事は十分にやってるよ。流石に辛くなってきた……。という状態で、最近の週末は英気を養うのに専念してる。週末に何か作りたくなるな...

 

半年前にPython3.11が出たばかりの時期に調べた時にはインストールに失敗して幾つかのライブラリは実験できなかった。

おかげで内容も中途半端。

 

今回は動作させて、EXE化も他のライブラリを試してみる。

※ ネタの導入として書いたが、出張中は土日含めて時間がないのでゲームをしてたのは出張前。

オープンソースソフトウェア(OSS)ライセンス

詳細を語るつもりはないので、ライセンス早見表はこちら。

形態 ライセンス 利用者へのコード公開 利用物のコード公開 改造物のコード公開 ライセンス明記 改造・複製・再配布・商用利用
パブリックドメイン CC0 不要 不要 不要 不要 可能
非コピーレフト MIT 不要 不要 不要 必要 可能
BSD 不要 不要 不要 必要 可能
Apache 不要 不要 不要 必要 可能
準コピーレフト MPL 不要 不要 必要 必要 可能
LGPL 不要 不要 必要 必要 可能
コピーレフト GPL 不要 必要 必要 必要 可能
AGPL 必要 必要 必要 必要 可能

商用で使うなら「準コピーレフト」までにしないと開発コード公開が必須となる。

因みにPythonライブラリのライセンスは「pip-licenses」をインストールすれば確認可能。

PythonのGUIライブラリ18選

PythonのGUIライブラリは多数ある。

学習用やサンプル的扱いのものも含めて18種類をリスト化した。

ライブラリ ライセンス 特徴
TkInter PSF(標準) インストール不要、機能が少ない
CustomTkinter CC0 1.0 手軽さもあり、機能も増えた。レイアウト調整に癖ある
PyQt GPL Qt。多機能でデザインがいい。ライセンスが厳しい
PySide LGPL Qt。多機能でデザインがいい。ライセンスがゆるい
Kivy MIT KV言語で直感的にレイアウトが作れる。モダンデザイン
WxPython wxWindows C++で記述されているため高速
Pygame LGPL ゲームに特化
Flexx BSD 2-Clause pythonをjavascript変換してブラウザでGUIを実現
pywebview BSD 3-Clause htmlでGUIを作成可能
PyGTK LGPL GNOME desktop環境に最適化
PySimpleGUI LGPLv3+ コードの書き方がシンプルで直感的でわかりやすい
turtle PSF(標準) 学習用のグラフィックライブラリ
PyGUI MIT 簡単だが機能少なめ
Flet Apache License 2.0 素早くGUIアプリを作成できる(Webサーバベース)
WPF MIT XAML形式でカスタム性の高いGUI
Electron MIT Node.jsとChromiumを使ったGUI
Eel MIT HTML&CSSを使ってGUIを作れる
PyOpenGL OpenGL-ctypes 2次元/3次元のグラフィックライブラリ

世界のトレンドはGoogleによると次の通り。

個人的に厳選したライブラリのみ紹介する。

PySide6

世界で人気GUIライブラリの一つである「Qt」をPythonでも使えるようにしたのがPySide6。

 

PySide2はPython3.11ではインストールに失敗した。

# # /c/Python311/Scripts/pip install PySide2
ERROR: Could not find a version that satisfies the requirement PySide2 (from versions: none)
ERROR: No matching distribution found for PySide2

PySide6はインストール可能。

/c/Python311/Scripts/pip install PySide6
Collecting PySide6
Downloading PySide6-6.5.1-cp37-abi3-win_amd64.whl (7.2 kB)
Collecting shiboken6==6.5.1
Downloading shiboken6-6.5.1-cp37-abi3-win_amd64.whl (1.1 MB)
—————————————- 1.1/1.1 MB 902.8 kB/s eta 0:00:00

PySide2からPySide6への乗り換えはそんなに難しくなさそうだ。

Porting Applications from PySide2 to PySide6 - Qt for Python

このGUIライブラリは仕事で馴染み深い。

Kivy

kivy特有の言語(kivylang、kivy言語)を用いて、CSSに似たような形でコードを書いていく。

こちらもライブラリのインストールから。

wxPython

Python GUIで最初に出会ったライブラリ。

ライブラリのインストールも他と同じ。

……だけどインストールに失敗。

使ってみたいライブラリではないので省略する。

CustomTkinter

GUIライブラリとなるKivyはモダンなデザインで最近のスマホアプリっぽいものが作れたりしますが、kv言語が必要になったりと少しハードルが上がる。

そこで、このライブラリも最近人気。

GUIもまぁまぁ近代的。

PythonのEXE化ライブラリ3選

Windows上で作成したらEXEファイルとして配布したい。

こちらも幾つもライブラリがある。

ライブラリ ライセンス 特徴
PyInstaller GPL 2.0 ファイルサイズがデカい・起動が遅い・ウイルス判定されやすい
py2exe MPL2 Windows 専用
Nuitka Apache Software License Python コードを一度C言語にトランスパイルしgccでコンパイルする

ライセンスと速度を加味して「Nuitka」を使ってみる。

EXEファイル作成方法は次のような形になる。

100行未満もサンプルコードでも「10分」程度はEXE作成時間が必要だった。

コンソール表示を隠して、プラグインを有効化にしたり……と実際のオプションはもっと長くなるはずだ。

 

PyInstallerでTkInter で作ったEXEファイルは「9MB」だったけど、「8MB」となた。

PyInstallerでPySimpleGUI で作ったEXEファイルは「60MB」だったけど、「38MB」となった。

 

ファイルサイズが小さくなっている事は確認できた。速度はよく分からない。

おわりに

この手のライブラリはどんどん増えるし、何を使ったらやりたい事を実現できるのか?応用が効くのか分からない。

そして、せっかく学習しても転職先や移動先で使っているライブラリが違ったら悲惨なので、できる限りシェアが大きなライブラリを使いたい。

調査は継続する。

ソースコード

単なるネットに転がっているサンプルコード。

CustomTkinter

PySide6

Kivy

タイトルとURLをコピーしました