Python

【Python】GUIライブラリの比較【Tkinter, PyQt, Kivy】

投稿日:2021年4月25日 更新日:

Python言語は、機械学習やサーバーサイドのイメージが強いと思うのですが、実はGUIアプリケーションを作成することも可能です。

今回は、Pythonで代表的なGUIツール4つを比較してみました。

Pythonで使えるGUIライブラリ

Tkinter

特徴

Tktinterは、Pythonに標準で用意されたライブラリです。
したがって、pip installなどの準備は必要なく、すぐに使用することができます。

使い勝手も良く、MVCモデルも簡単なアプリならすぐに作ることができます。

しかし、他のGUIライブラリで作るよりも、見た目がリッチではないです。(完全に主観ですが笑)
機能面も他のGUIライブラリよりも劣っているとの意見もありました。

ちなみに、取り組んでいる人口はかなり多いので、ネットにたくさん情報があります。
丁寧な解説記事がいくつもあるので、習得に困ることはないと思います。

向いている人

とりあえずサクッとローコストでGUIアプリを作りたい!と言う方にはおすすめできます。

PyQt

特徴

PyQtは、C++のQtとうGUIツールがPythonようにwrapperされたものになります。

見た目も良く、機能面も十分で、PyQtに取り組んでいる人口は多いです。
書籍も販売されているので、情報に困ることはないでしょう。

ここまで聞いたら、「PyQt最強じゃん!」ってなるのですが、PyQtには致命的なデメリットがあります。
それは、ライセンスです。

PyQtは商用利用する分には、ライセンス料金を支払う必要が発生します。
ビジネス用としてでGUIライブラリを洗濯するならば、その点は覚悟しなければなりません。

向いている人

個人利用でアプリ開発をする人におすすめです。

Kivy

特徴

Kivyは、クロスプラットフォーム対応のGUIアプリを作成することができます。

見た目もよく、機能面も十分で、取り組んでいる人口も多く、なんとオープンライセンスです!
ここまで聞いたら「Kivy最強じゃん!」ってなるのですが、Kivyにもデメリットがあります。

それは、
Kivy言語を習得する必要があることと、日本語の情報が少ないことです。

Kivyの場合は、レイアウトに関してはKivy言語で記述する必要があります。
そのため、新たに一つの言語を習得しなければならずハードルが高いです。
(実際触ってみると、べらぼうに難解なわけでもないですけど、、)

もう一つは、日本語の情報が少ないことです。
英語の情報はたくさんネットに落ちていますが、日本語の情報はTkinterやPyQtと比べると圧倒的に少ないです。
僕も含め、日本語の情報発信者はどんどん増えているので、そのうち解決するとは思ってます。

向いている人

新しい言語の取得に抵抗がない方

まとめ

Python用のGUIライブラリを紹介しました。

Tkinterは、Python標準ライブラリで扱いやすいです。
PyQtは、多機能ですがライセンス料が発生します。
Kivyは、多機能でオープンライセンスですがハードルが高いです。

Python学習におすすめ教材

Pythonについて、しっかりと基礎から学びたい、実践的なスキルを身につけたいと考えている方向けに、おすすめの学習教材を紹介します。
これらの教材は、実際に僕が使った教材になっています。

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です!

ベネッセが運営する動画学習サイトUdemyで視聴することができる動画教材です。
(セールの時には¥1,500程度で買えます!)

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

エキスパートPythonプログラミング改訂2版 Pythonプログラミングのベストプラクティスを伝授

本書は、Pythonを使って仕事をしている開発者が普段どのようなツールやテクニックを用いて仕事をしているのか、また開発者が実際に現場で用いているベストプラクティスについて解説した書籍です。本書を読むことで、先進的なPythonプログラマが日常的に使用している開発ノウハウを学ぶことができます。

より実務に近いノウハウが盛りだくさんの書籍です。
Pythonエンジニアを目指す方は持っておいて損はないと思います。

-Python
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【Kivy】Widgetの初期値をidで指定する方法【Python】

Kivyを使ったアプリ開発をやっていると、widgetの初期値について、kvファイルで指定するのではなくpythonファイルで設定したくなることがあると思います。そんな時、root widgetクラス …

【Python】pytestの使い方【テスト駆動開発】

今回は、テスト駆動開発の足掛けとして、pytestの使い方を紹介します。 テスト駆動開発とは、テストのことを第一に考えて実装する開発法のことです。アジャイル開発のように、設計・開発・テストを短く繰り返 …

【入門】Pythonの学習で失敗しないためにおすすめの教材

Pythonを学習するうえで、慎重に選びたいのが学習教材です。Pythonは手軽に始められるがゆえに、我流でやってしまうと変な癖がついてしまいやすく、結局実用的なスキルにならないとうことが多々発生しま …

【Python】loggingの正しい使い方

開発効率やメンテナンス性の観点から、ログを残すことは非常に重要です。 Pythonにはログ出力用に「logging」モジュールが用意されています。loggingを使うことで、簡単にログ管理をすることが …

【Kivy】AttributeError: ‘ROOT’ object has no attribute ‘_disabled_count’の対処法【Python】

Kivyでのアプリ開発をしていると、このようなエラーに出くわすことがあります。こちらのエラー対処法を紹介します。 結論:Widgetを定義したクラスのコンストラクタを修正 この場合は、kvファイルでは …

yassanさんのプロフィール写真

yassan
インフラエンジニア。
独学でインフラ・クラウドについて学んでいます。
大阪 / 20代後半 / 決闘者 / FE / AWS-SAA

twitter: @yassan10787859