目次

はじめに
表記関係について
第1章 PySimpleGUIについて
1.1 PySimpleGUIとは
1.2 なぜPySimpleGUIなのか
1.3 開発環境
1.4 インストール方法
第2章 PySimpleGUIで作れるもの
第3章 PySimpleGUIの基本的なコード構成
3.1 ライブラリーをインポートする
3.2 部品を定義する
3.3 部品を配置する
3.4 ウィンドウを表示する
3.5 動作を設定する
第4章 基本的な部品の作り方
4.1 ポップアップウィンドウ
4.2 データ表示
4.3 テキスト入力
4.4 ボタン
4.5 選択入力
第5章 便利な機能
5.1 部品のキー設定方法
5.2 部品更新方法
付録A 付録
A.1 参考サイト
おわりに

はじめに

図1: Welcome!

 Pythonは最近人気のプログラミング言語です。Pythonはデータ分析、機械学習やWebアプリ制作など、幅広い用途に使われています。

 また、私たちの仕事を楽にするさまざまな自動化、効率化プログラムも作成できます。初学者向けの書籍や動画教材もたくさんあり、ノンプログラマーでも業務自動化ツールを作ることができます。

 このような、みなさんがPythonを学習するための教材では、プログラム実行はprint関数での表示やinput関数での入力など、テキストベースで実行することが多いと思います。

 一方、みなさんがパソコンでよく使うExcelやWebブラウザーのようなアプリケーションを実行するときはどうでしょうか。アプリケーションを起動すると、GUI(グラフィカルユーザーインターフェース)という専用の画面が出てきて、ボタンやメニューなどを選択することで実行や入力ができると思います。

 このように、パソコンにインストールして実行するソフトウェアのことを、デスクトップアプリケーションソフトウェア(デスクトップアプリ)といいます。

 みなさんがPythonで作ったツールも、殺風景なテキストではなく、デスクトップアプリとしてGUIで操作したり表示できたらカッコいいですよね。自分だけではなく、他の人にも使ってもらいやすくなります。

 でも、GUIなんて作るの大変そうだし、デザインは苦手だと思う方もいるかもしれません。私もデザインは苦手で、GUIを作るのがあまり得意ではありません。

 そこで、Pythonが誇る豊富なライブラリーの出番です。Pythonには、GUIを作るためのライブラリーがいくつかあります。その中で私がオススメしたいのは、「PySimpleGUI」というライブラリーです。

 PySimpleGUIは、その名の通り、シンプルなコードでGUIが作れるPythonのライブラリーです。このライブラリーを使うことで、短いコードできれいなGUIが作れます。デフォルト設定でも見栄えがよく、細かいデザインを気にしなくても大丈夫です。

 最初に出てきた「ようこそPySimpleGUIの世界へ!!」のメッセージボックスは、このライブラリーで作ったものです。実はこれ、2行のコードで作れちゃうんです。

 この本は、デスクトップアプリをはじめて作る人が、GUIで以下のことができるようになることを目的としています。

 ・どのようなGUIが作れるのかをざっと把握できる

 ・GUIを作るためのコードの書き方を理解し、自分のツールに応用できる

 みなさんがPythonで作ったツールをPySimpleGUIを使ってGUI上で操作・表示することで、簡単なデスクトップアプリを作ることができます。

 なお、この本は以下の知識がある方を対象としています。

 ・Pythonの基本文法を理解し、簡単なプログラムを作成できる方

 ・パソコンにPythonの環境構築ができる方(PySimpleGUIはGoogle Colaboratoryでは実行できません)

 この本で使うPythonの文法は、変数・ループ・条件分岐・関数の呼び出し・リスト・辞書です。Pythonの文法については説明しませんが、Pythonの入門書で学習したり、初心者向けの講座を受講された方であれば問題なく理解できると思います。

 この本は、すべてを読む必要はありません。はじめてPySimpleGUI環境構築から行う人は1章から順番に読んでいただいて構いませんが、ある程度GUIが作れるようになったら、必要なときに必要なところだけ読むスタイルでOKです。

 すでにいくつかのGUIが作れる方であれば、2章で作りたい部品を探して、4章でそのコードの書き方を調べる使い方で十分かと思います。

図2: Good luck!

 この本に載せているサンプルコードはこちら(https://github.com/hotta3216/book-PySimpleGUI)に格納しています。

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。

 会社名、製品名については、本文中では©、®、™マークなどは表示していません。

 PySimpleGUI™とそのロゴはPySimpleSoft, Inc.の商標です。

第1章 PySimpleGUIについて

1.1 PySimpleGUIとは

 PySimpleGUIは、GUIを作成するためのPythonのサードパーティーライブラリーです。サードパーティーライブラリーとは、Pythonをインストールしただけでは使えない外部ライブラリーで、各自でインストールして使う必要があります。インストール方法については、1.4節で説明します。

1.2 なぜPySimpleGUIなのか

 PythonでGUIを作成するライブラリーは、他にもいくつかあります。有名なところではtkinterがあります。tkinterはPythonの標準ライブラリーに含まれているため、インストールしなくてもimportするだけで使えるメリットがあります。

 しかし、tkinterはGUI部品の設定が少し複雑で、部品サイズを意識して配置していく必要があります。設定や呼び出しの構文も直感的ではなく、作りたい部品の種類ごとに書き方を習得していく必要があるため、その都度学習コストがかかります。

 ここで、tkinterとPySimpleGUIを比較してみましょう。

 次の図は、テキストボックスとボタンだけの簡単な名前入力アプリです。テキストボックスに文字列を入力して「Submit」ボタンをクリックすると、その結果をポップアップウィンドウに表示します。左がtkinterで作ったもので、右がPySimpleGUIで作ったものです。

図1.1: tkinter_vs_PySimpleGUI

 どちらも、色やフォントなどの見た目はデフォルト設定です。見た目の好みはあるかもしれませんが、PySimpleGUIの方が色がついていて、見た目がいい感じです。もちろんtkinterも設定をすれば、同じように色をつけたGUIを作ることができますが、その分コードが長くなります。

 次に、この部品を作るためのコードを比較してみましょう。コードの中身については3章で説明しますので、ここでは内容は理解できなくても問題ありません。

 これはtkinter版のコードです。コードの長さは26行です。

リスト1.1: 1_name_app_tkinter.py

import tkinter as tk
from tkinter import messagebox

def clicked():
  messagebox.showinfo(
    '', f'あなたの名前は {entry_1.get()} です'
    )

root = tk.Tk()
root.geometry('250x120')
root.title('名前入力アプリ')

label_1 = tk.Label(root, text='名前を入力してください')
entry_1 = tk.Entry(root, width=20)
button_1 = tk.Button(root, text='Submit', command=clicked)
root.columnconfigure(0, weight=1)

root.rowconfigure(0, weight=1)
root.rowconfigure(1, weight=1)
root.rowconfigure(2, weight=1)

label_1.grid(column=0, row=0, sticky='s')
entry_1.grid(column=0, row=1)
button_1.grid(column=0, row=2, sticky='n')

root.mainloop()

 次は、PySimpleGUIで書いたコードです。

リスト1.2: 1_name_app_pysimplegui.py

import PySimpleGUI as sg

layout = [
    [sg.Text('名前を入力してください')],
    [sg.Input()],
    [sg.Button('Submit')],
    ]

window = sg.Window('名前入力アプリ', layout)

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    if event == 'Submit':
        sg.popup(f'あなたの名前は {values[0]} です', title='')

window.close()

 tkinterの26行に対して、PySimpleGUIは18行で書けます。tkinterはウィンドウ内の部品の配置場所やサイズを指定する必要がありますが、PySimpleGUIは部品をリストとして並べるだけなので、コードもtkinterよりもスッキリしていて直感的に書けます。

 このように、PySimpleGUIは直感的かつ短いコードでGUIが作れます。ノンプログラマーが作りたいのは作業を自動化・効率化するためのツールであり、一般に販売するようなツールではないと思います。GUI作成のためのコード作成に時間をかけることなく、必要な機能が実現できるプログラムを速く作れる方がいいですよね。

 よって、PySimpleGUIはPythonでデスクトップアプリを作りたいノンプログラマーに適しているライブラリーだと言えます。

1.3 開発環境

 次に、PySimpleGUIの開発環境について説明します。

 この本では、以下の環境で実行確認しています。

 ・OS:Windows11

 ・Pythonバージョン:3.12.4

 ・PySimpleGUIバージョン:5.0.6

 この本ではWindows11で実行していますが、LinuxやmacOSでもPython環境があれば同じコードで実行できます。OSやバージョンにより、この本の画像とGUIの見た目が少し変わる可能性はありますが、GUIの機能は変わりません。

 Pythonのバージョンは、2024年7月時点の最新バージョン3.12.4を使っています。ただし、PySimpleGUIはPython3.4以降に対応しているため、お使いのPythonバージョンが3.4以降であれば問題なく実行できます。

 Anaconda環境でも使えます。Anaconda環境は次節で説明するインストール時のコマンドが公式Pythonと違いますが、コードの書き方や実行結果は変わりません。

 2024年7月時点のPySimpleGUIの最新バージョンは、5.0.6です。バージョン5以降はライセンス登録が必要です。

 個人利用であればライセンスは無料ですが、商用利用ではライセンス料がかかります。ライセンス料と個人利用、商用利用の違いについては、公式Webサイト(https://www.pysimplegui.com/pricing)を参照ください。

 個人利用でも商用利用でも、アカウント登録とライセンスキーの設定が必要です。設定方法は次節で説明します。

 もしアカウント登録をせずに使いたい場合は、ライセンス登録が不要なバージョン4台の最終版である4.60.5を使うことも可能ですが、すでにバージョン4台はサポートが停止されています。将来的に使えなくなる可能性もあるため、ご注意ください。バージョン5はバージョン4台と互換性があるため、本書のコードはバージョン4.60.5でも問題なく動作します。

 コードは普段使っている環境で実行できます。プロンプトからの実行、IDLE・PyCharm・VS Codeなどの統合開発環境、Jupyter NotebookやJupyter Labなど、パソコン上の環境であればいずれの環境でも動作します。

 ただし、Google Colaboratoryのようなクラウド上で実行する環境では動作しません。PySimpleGUIはパソコン上で動作するデスクトップアプリであり、パソコンにインストールした環境でしか実行できないので、注意が必要です。

1.4 インストール方法

 次に、PySimpleGUIのインストール方法およびライセンス登録方法について説明します。インストール最初の1回だけでよいです。すでにインストールしてある環境であれば、importだけで使えます。

 Windowsの公式Python環境

python -m pip install pysimplegui

 Linux, macOSの公式Python環境

python3 -m pip install pysimplegui

 Anaconda環境

conda install -c conda-forge pysimplegui

 正しくインストールできているかは、以下のコマンドで確認します。

 公式Python環境

pip list

 Anaconda環境

conda list

 実行すると、以下の図のように、インストールしているライブラリーの一覧を表示します。この場合は、PySimpleGUIの5.0.6のインストールを確認できます。

図1.2: バージョン確認

 次に、ライセンス登録方法について説明します。

 インストールが完了したら、なんでもよいので、PySimpleGUIのライブラリーを使用したプログラムを実行します。すると、初回は以下のような画面が出てきます。

図1.3: license画面1

 「I accept the terms in the License Agreement」にチェックを入れて、OKをクリックします。

図1.4: license画面2

 この画面で「Register」をクリックするとブラウザーの登録画面が開くので、アカウント登録に進みます。

 なお、ここで「Free Trial」をクリックすると、30日はそのまま使用できますが、以下のようにメッセージが出ます。

図1.5: Free Trialでの表示

 この場合は下に出ている「TRIAL PERIOD...」の赤い文字をクリックすると、ブラウザーで登録画面が開きます。

 次に、アカウント登録方法です。

図1.6: アカウント登録画面1

 この本では、個人利用としての登録手順を説明します。ブラウザーの登録画面で左側の「Get Started For Hobbyists」をクリックします。

 クリックすると、このような画面が出てきます。

図1.7: アカウント登録画面2

 チェックを入れて名前を記入して、「Submit」をクリックします。

 登録画面になるので、必要事項を記入します。GitHub IDは記入しなくても問題ありません。

図1.8: アカウント登録画面3

 「Register」をクリックすると、以下の画面になります。

図1.9: アカウント登録画面4

 先ほど登録したメールアドレスに届いているVerification Codeを入力し、「Validate Code」をクリックします。

 以下のようにライセンスキーが表示されます。なお、ライセンスキーはメールでも送られてきます。

図1.10: ライセンスキー表示画面

 クリップボードにコピーし、最初の画面の下にある「Enter your Developer Key here」に貼り付けてOKをクリックすれば、ライセンス登録完了です。

図1.11: ライセンスキー入力画面

 なお、最初に「Free Trial」を選択している場合は、ライセンス登録の画面が出てきませんので、以下の手順でライセンス登録します。

 まず、以下のコードを実行します。

import PySimpleGUI as sg

sg.main()

 すると、以下のようなGUIが表示されます。

図1.12: PySimpleGUI Home

 License Keyタブをクリックし、先ほど表示されていたライセンスキーを貼り付けて「Install」をクリックすれば、登録完了です。

図1.13: PySimpleGUI Homeのライセンスキー入力画面

 登録完了するとこのような画面が表示され、登録が完了しました。

図1.14: ライセンスキー登録確認

 このウィンドウの下の「TRIAL PERIOD...」の文字は、トライアル登録していた場合のみ表示されます。

 ちなみに、ライセンスキーがわからなくなった場合は、PySimpleGUIのWebサイト(https://www.pysimplegui.com/)の右上にあるLoginボタンからメールアドレス、パスワードを入力すると再表示されます。

 これで、PySimpleGUIを使う準備ができました。2章では、PySimpleGUIでどんなGUIが作れるのかについて説明します。

試し読みはここまでです。
この続きは、製品版でお楽しみください。