PythonでGUIアプリを作成するのにおすすめのライブラリとは?現役エンジニアが解説【初心者向け】
初心者向けにPythonでGUIアプリを作成するのにオススメのライブラリについて現役エンジニアが解説しています。GUIの反対派CLIでWindowsのコマンドプロンプトのような画面のことです。Pythonでも他のツールを使えばデスクトップアプリケーションを作成することが出来ます。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
PythonでGUIアプリを作成するのにおすすめのライブラリについて解説します。
Pythonで作成するGUIアプリというのは、みなさんが通常WindowsやMacなどで操作している画面上で、ダブルクリックして起動するアプリケーションを意味しています。
アプリケーションを起動するのにダブルクリックをするのが普通だと感じるかもしれませんが、プログラミングにおいて、普通はコマンドラインやターミナルと呼ばれる黒い画面で起動コマンドを入力することでアプリケーションを実行します。
これをGUIといいます。
GUIとはコマンドラインインターフェイスという意味です。
しかし、すべての人がコマンドラインインターフェイスを使いこなすことができないため、GUI(グラフィカルユーザーインターフェイス)を利用したWindowsやMacで通常利用するアプリケーションを生成する必要がでてきます。
目次
今回は、Pythonに関する内容だね!
どういう内容でしょうか?
PythonでGUIアプリを作成するのにおすすめのライブラリについて詳しく説明していくね!
お願いします!
GUIを使うメリットとは?
GUIはGraphical User Interfaceの略で、画面操作(ボタンのクリックやマウスによる移動など)で、プログラムを操作する方式です。
対義語はCUI(Character User Interface)で、キーボードによるコマンド入力で、プログラムを操作する方式です。
文字に加え、アイコンなどの画像で操作対象をわかりやすくしたり、マウスで直感的に操作できたりするのがGUIの利点です。
コンピュータ操作に不慣れな人や、そのプログラムを初めて扱う人でも、GUIならばプログラムを操作できます(十分親切なインターフェイスであることが条件です)。
GUIのフレームワークを選ぶ際のポイントは?
GUIプログラミングの際、ウィンドウ操作のAPIを直接操作するのはまれで、適当なフレームワーク(開発環境)を用いるのが一般的です。
選定では以下のような点に着目します。
- ターゲットとするOS(Windows, Linux, Macなど)に対応しているか
- 機能は充足しているか
- 外観(見た目)はどうか
これらについて、詳しく解説していきます。
ターゲットOSに対応しているか
GUIプログラムを生成する場合、ターゲットOSに対応しているかを考える必要があります。
ターゲットOSとはWindowsやLinuxやMacを意味します。
最終的に納品する場合、納品先との契約でターゲットとするOSに合わせてGUIアプリを生成します。
もしも、顧客がMacのみ利用している環境で、WindowsのGUIアプリを納品しても、顧客先では利用できないためです。
機能は充足しているか
納品先との契約で指定された機能を実装するために、使用するGUI生成プログラムが仕様を満たしているか考える必要があります。
たとえば、マルチタッチアプリを開発したいのか、データ入力支援するアプリを開発したいのかで機能が異なるためです。
UIはどうか
使用する上でGUIフレームワークのUI(ユーザーインターフェイス)は非常に重要です。
GUIフレームワークのUIはGUIフレームワークを使いこなす上で、使いやすい配置によく使うボタンが配置されているか、設定で思い通りの設定ができるかなどで判断する必要があります。
PythonにおすすめのGUI
Tkinter
表示例
引用元:https://www.tutorialsteacher.com/python/create-gui-using-tkinter-python
強み
TkinterはPython標準のGUIフレームワークなので、ドキュメントや事例も豊富です。
また、追加インストールも不要で、Python本体に合わせてバージョンアップされます。
用途
非常に安定しているので、PythonのGUIプログラミングを最初に試す場合、良い選択肢です。
ターゲット
Mac 、Windows 、Unix、Linuxに対応しています。
Kivy
表示例
引用:Kivy: Cross-platform Python Framework for NUI Development
強み
KivyはNUI(Natural User Interface)でのマルチタッチアプリ開発のためのライブラリです。
GPUによる高速化もサポートしています。
用途
スマートフォンやタブレット向けのマルチタッチアプリをPythonで開発したい場合に、選択肢の筆頭になります。
2Dゲーム画面の開発にも適しています。
ターゲット
Windows、Mac、Linux、RPi、Android、iOS、Anacondaで利用できます。
PyQt
表示例
引用元:PyQt5 book (4th Edition, 2020) Create GUI Applications with Python & Qt5
強み
PyQt(パイキュート)はC++で記述されたGUIフレームワークです。
C++で開発されたことで、クロスプラットフォーム対応のため、WindowsでもMacでもLinuxでも同じコードで作成したものを利用することができます。
用途
商用で利用する場合はライセンス費用を支払う必要があります。
非常に多岐にわたる機能があるため、ライセンス費用をはらって商用で利用する用途が良いです。
ターゲット
Windows、Mac、Linux、Unix、Android、iOSで利用できます。
wxPython
表示例
強み
Tkinterと比較するとウィジェットが豊富で、外観や操作感をカスタマイズしやすいです。
用途
ウィジェットを使用するためには、追加インストールが必要ですが、豊富なウィジェットを求める場合はTkinterよりもwxPythonを選んだほうが良いです。
ターゲット
Linux、Windows、Macに対応しています。
PySimpleGUI
表示例
強み
Tkinterをベースに開発されているため、動作が安定しています。
非常にシンプルなコードで実装が可能です。
用途
細かい指定をすることが難しいですが、最初に利用するGUIとしては使いやすいです。
ターゲット
Windows、Linux、Mac、Trinketに対応しています。
Pygame
表示例
引用:Historical Wargame Simulator – Revision E.5 (0.6.1.8) (pygame.org)
強み
公式ページのチュートリアルを真似するだけで、それらしいプロダクトを作成可能です。
用途
ゲーム専用のGUIフレームワークです。
ターゲット
Linux、Windows、Mac、Unixで利用できます。
一覧表
名前 | 強み | 用途 |
Tkinter | ドキュメント | 動作が安定 |
Kivy | マルチタッチ対応 | スマホアプリ |
PyQt | クロスプラットフォーム | 商用アプリ |
wxPython | ウィジェット豊富 | ウィジェット目的 |
PySimpleGUI | 簡単に実装できる | 初心者用 |
Pygame | チュートリアル豊富 | ゲーム用 |
実際にPySimpleGUI でGUIアプリを作ってみる
PySimpleGUI でGUIアプリを作成する理由は、初心者向けで非常に簡単にGUIアプリの作成が可能だからです。
PySimpleGUI のインストール
PySimpleGUI公式サイトの説明に沿ってPySimpleGUI をインストールします。
pip install pysimplegui
サンプルコード
PySimpleGUI公式ページのサンプルコードを利用します。
import PySimpleGUI as sg sg.theme('DarkAmber') layout = [ [sg.Text('Pythonを勉強')], [sg.Text('なにか入力してね。'), sg.InputText()], [sg.Button('Ok'), sg.Button('Cancel')] ] window = sg.Window('Techacademy', layout) while True: event, values = window.read() if event == sg.WIN_CLOSED or event == 'Cancel': # if user closes window or clicks cancel break print('You entered ', values[0]) window.close()
解説
import PySimpleGUI as sgでPySimpleGUIをインポートしてsgという名前で利用できるようにしています。
sg.theme(‘DarkAmber’)で色をDarkAmberに指定します。
layout = でレイアウトの指定内容をlayoutオブジェクトに代入します。
[ [sg.Text(‘Pythonを勉強’)],では、Pythonを勉強という表示をしています。
[sg.Text(‘なにか入力してね。’), sg.InputText()],では、なにか入力してね。という表示をしています。
sg.InputText()を利用することで入力フォームを表示しています。
[sg.Button(‘Ok’), sg.Button(‘Cancel’)] ]では、sg.Button(‘Ok’)でOkボタンを表示しています。
sg.Button(‘Cancel’)でCancelボタンの表示をしています。
window = sg.Window(‘Techacademy’, layout)ではwindowに、第1引数のTechacademyという文字列と、第2引数に先ほど、layoutオブジェクトに代入した指定を行い、Window生成処理をするため、windowオブジェクトに代入しています。
while True:ではループ処理を行います。
ループ処理とは繰り返し処理を行うことを意味しています。
event, values = window.read()ではwindowオブジェクトに代入した内容を読み込み、eventオブジェクトとvaluesオブジェクトに代入しています。
if event == sg.WIN_CLOSED or event == ‘Cancel’: # if user closes window or clicks cancelでは、2種類の条件を指定しています。
event == sg.WIN_CLOSEDでは、eventオブジェクトが、sg.WIN_CLOSEDの状態だったらという条件です。
つまり、☓を押してウインドウが閉じられたらという条件を意味します。
event == ‘Cancel’:では、Cancelボタンが押されたらという条件を意味します。
orで接続されているので結果的に、☓を押してウインドウが閉じられるか、Cancelボタンが押されたらループ処理を終了するという意味になります。
print(‘You entered ‘, values[0])ではコマンドラインに入力した値を表示しています。
window.close()では処理を終了しています。
表示結果
入力フォームとOkやCancelボタンが表示されるGUIアプリを、簡単に作ることができます。
動作確認
まとめ
この記事ではPythonを利用してGUIアプリの作成が可能なGUIフレームワークの紹介を行いました。
Pythonでプログラミングをすると、CUI上の処理が多くなります。
CUIの操作は一般的に利用しづらいデメリットがあります。
GUIアプリを作ることができれば幅広いユーザーにPythonで作成したアプリを利用してもらうことが可能になります。
執筆してくれたメンター
中本賢吾(なかもとけんご) アジマッチ有限会社 代表取締役社長開発実績:PHPフレームワークによるフランチャイズ企業向け会員制SNS。Shopifyによる海外進出用大規模ネットショップ構築。Vue.jsによる金融機関向け内部アプリ。AWSやLinuxハウジングサーバでの環境構築。人工知能を利用した画像判別システム。小売チェーン店舗用スマホアプリ。Wordpressによる不動産チェーン店向け賃貸・売買仲介システム。基幹システム移管用データコンバートシステム。小学生がUnityでオリジナルAndroidアプリをGoogle Playでリリース、NHK Whyプログラミング入賞、全国Programing Festival入賞、中学生がノーコードでSNS型PWAアプリリリースなど、ボランティアプログラミング教育活動行っている。 |
内容が分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
Pythonを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのPythonコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、人工知能(AI)や機械学習の基礎を完全オンラインでしっかり習得できます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!