1. はじめに|PythonでGUIアプリ作ってみたい人へ
こんにちは!Pythonを勉強していると、次のように思ったことはありませんか?
「そろそろ、何か“見た目のある”アプリを作ってみたい!」
「ターミナルじゃなくて、ボタンや入力欄があるアプリってどうやって作るの?」
そんなあなたにおすすめなのが 「PySimpleGUI(パイ・シンプル・ジーユーアイ)」 というライブラリです。
PySimpleGUIを使えば、誰でも簡単にデスクトップアプリを作ることができます。
しかも、PythonだけでOK!HTMLやCSS、JavaScriptなどの知識は必要ありません。
▶ 例えば、こんなアプリが作れます!
- クリックしてデータを表示するツール系アプリ
- 入力欄に文字を入れて計算するミニアプリ
- Web APIと連携して郵便番号から住所を取得する便利アプリ
…などなど、自分のアイデアをすぐに形にできるのが大きな魅力なんです!
このページでは、
- PySimpleGUIとは何か?
- 基本的な使い方(部品の配置・イベント処理など)
- 実際に簡単なGUIアプリを作ってみる手順
- さらに、Web APIと組み合わせた応用アプリの例
を、Python初心者でもわかるようにイチから丁寧にご紹介します。
2. PySimpleGUIとは?|簡単&シンプルにGUI開発
PySimpleGUI(パイ・シンプル・ジーユーアイ)は、Pythonでデスクトップアプリを簡単に作れるGUIライブラリです。
「GUI」とは、ボタンやテキストボックスなど**“見た目で操作できる”アプリ**のこと。たとえば、電卓アプリや設定画面などを思い浮かべてみてください。あれも全部GUIですね。
Pythonにはもともと「Tkinter」というGUIライブラリが標準で付いていますが……
「部品の配置がわかりにくい…」
「コードが長くて、何をしてるのかパッと見でわからない…」
と、初心者にはちょっとハードルが高めでした。
そこで登場するのが PySimpleGUI!
▶ PySimpleGUIのここがスゴイ!
- 直感的で読みやすいコード
- レイアウトは「リスト」形式で並べるだけ
- 日本語も問題なく表示OK
- Tkinterの上に作られているから安定性もバッチリ!
たとえば、たったこれだけで「こんにちは!」と表示するウィンドウを作れちゃいます👇
import PySimpleGUI as sg
layout = [[sg.Text("こんにちは!")], [sg.Button("閉じる")]]
window = sg.Window("サンプルアプリ", layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == "閉じる":
break
window.close()
どうですか?すっごくシンプルですよね。
▶ どんな場面で使えるの?
- Excel操作ツール(OpenPyXLと連携)
- データ送信アプリ(Web APIと連携)
- 入力チェックやデータ変換アプリ など
業務効率化や、ちょっとした便利ツールを作るのにピッタリです。

それでは次に、PySimpleGUIでアプリを作る基本構成とその使い方を見ていきましょう!
3. PySimpleGUIの基本構成と使い方
PySimpleGUIでアプリを作るときは、「部品(エレメント)」をウィンドウの中に並べていくという考え方が基本です。難しそうに聞こえるかもしれませんが、実際はとってもシンプル!
まずはPySimpleGUIの「3つの基本要素」をおさえておきましょう。
🔷 1. Window(ウィンドウ)
アプリの土台となる画面です。ここにテキストやボタンなどの部品を置いていきます。
たとえば「設定画面」や「検索フォーム」といった全体の囲いがこのWindowです。
🔷 2. Element(エレメント)
ウィンドウの中に配置するボタン・ラベル・入力欄などの部品です。
PySimpleGUIには、よく使う部品がたくさん用意されています!
| エレメントの種類 | 説明 | コード例 |
|---|---|---|
| テキスト | 文字を表示する | sg.Text("こんにちは") |
| 入力欄 | ユーザーの入力を受け取る | sg.InputText(key="-NAME-") |
| ボタン | クリックできるボタン | sg.Button("送信") |
| コンボボックス | 選択肢をリストから選ぶ | sg.Combo(["A", "B"], key="-CHOICE-") |
🔷 3. Layout(レイアウト)
エレメントの配置場所を指定するリストです。
行単位で部品を並べるように考えるとわかりやすいです。
layout = [
[sg.Text("名前")], # 1行目
[sg.InputText(key="-NAME-")], # 2行目
[sg.Button("送信")] # 3行目
]
このように、「[]」で1行を表し、その中にエレメントを置いていくというスタイルです。
💡 ワンポイント:エレメントのkeyとは?
入力欄などのエレメントには、keyという識別名をつけることで、あとで値を取り出すときに使います。
慣習的に "-NAME-" のようにハイフンと大文字で書くことが多いです。

ここまでで、PySimpleGUIの「部品を組み立てて、アプリを作る」というイメージが掴めてきましたか?
次は、いよいよ実際に簡単なフォームアプリを作ってみましょう!
4. 実践|簡単なフォームアプリを作ってみよう
それではここからは、実際にPySimpleGUIを使ってミニアプリを作ってみましょう!
今回作るのは、以下のような**「名前を入力 → 挨拶を表示」**するシンプルなフォームアプリです。
💻 完成イメージ
[名前を入力してください] (テキストボックス)
[ 挨拶を表示 ] ←ボタン
↓ ここに「こんにちは、〇〇さん!」と表示される
🔧 ステップ1:ライブラリのインストール
PySimpleGUIがまだインストールされていない場合は、ターミナルで以下のコマンドを実行してください。
pip install PySimpleGUI
🧱 ステップ2:Pythonコードを書いてみよう
以下が、今回のミニアプリのコード全体です。
import PySimpleGUI as sg
# レイアウトの定義
layout = [
[sg.Text("名前を入力してください")],
[sg.InputText(key="-NAME-")],
[sg.Button("挨拶を表示")],
[sg.Text("", size=(30,1), key="-OUTPUT-")]
]
# Windowの作成
window = sg.Window("あいさつアプリ", layout)
# イベントループ(アプリを動かし続ける)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
elif event == "挨拶を表示":
name = values["-NAME-"]
message = f"こんにちは、{name}さん!"
window["-OUTPUT-"].update(value=message)
# 終了処理
window.close()
🔍 コードのポイント解説
sg.InputText(key="-NAME-")
→ ユーザーが名前を入力する欄を作ります。event, values = window.read()
→ イベント(ボタン押下など)と、入力値を取得します。values["-NAME-"]
→ 入力欄の値を取得するには、keyを使います。window["-OUTPUT-"].update(value=...)
→ テキスト表示エレメントの内容を、実行中に変更します。
✅ 実行方法
Pythonファイル(例:hello_app.py)として保存し、ターミナルで以下を実行するとアプリが起動します。
python hello_app.py

ここまでで、あなたはGUIアプリの第一歩を踏み出しました!
たったこれだけで、自分で動くデスクトップアプリを作れるなんて、すごくワクワクしませんか?
5. 応用|Web APIと連携して住所取得アプリを作成
ここからは、PySimpleGUIの応用編!
外部のWeb APIと連携して、実用的なアプリを作ってみましょう。
今回のテーマは、「郵便番号から住所を取得するアプリ」です。
郵便番号を入力すると、その住所を自動で表示してくれるアプリ
👉 実は、**無料のAPI「ZIP Cloud」**を使えば簡単にできます!
💡 Web APIってなに?
Web API(ウェブエーピーアイ)は、インターネット越しにデータをやりとりできる仕組みのこと。
「郵便番号 → 住所」のように、入力に対して外部から情報をもらえる便利なサービスです。
Pythonでは requests というライブラリを使って、簡単にAPIにアクセスできます。
🔧 必要なライブラリ
まずは、以下のコマンドで requests をインストールしておきましょう。
pip install requests
💻 コード全体(郵便番号→住所アプリ)
import PySimpleGUI as sg
import requests
def get_address(zip_code):
url = f"https://zipcloud.ibsnet.co.jp/api/search?zipcode={zip_code}"
res = requests.get(url)
if res.status_code != 200:
return "住所の取得に失敗しました"
data = res.json()
if data["results"] is None:
return "該当する住所が見つかりません"
result = data["results"][0]
return f"{result['address1']}{result['address2']}{result['address3']}"
# レイアウト定義
layout = [
[sg.Text("郵便番号(7桁)"), sg.InputText(key="-ZIP-")],
[sg.Button("住所検索")],
[sg.Text("", size=(40,1), key="-RESULT-")]
]
# ウィンドウ作成
window = sg.Window("住所検索アプリ", layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
elif event == "住所検索":
zipcode = values["-ZIP-"].strip()
if len(zipcode) != 7 or not zipcode.isdigit():
window["-RESULT-"].update("正しい7桁の郵便番号を入力してください")
else:
address = get_address(zipcode)
window["-RESULT-"].update(address)
window.close()
🔍 コードのポイント
get_address(zip_code)
→ 郵便番号を使ってAPIを呼び出し、住所を取得する関数です。res.json()
→ APIのレスポンスはJSON形式。これを辞書として扱えます。window["-RESULT-"].update(...)
→ 取得した住所を画面に表示しています。
🧪 試してみよう!
「1000001」など、実在する7桁の郵便番号を入力してみてください。
たとえば 1000001 は東京都千代田区の住所が返ってきます。
🎯 このアプリで学べること
- GUIと外部データを組み合わせる方法
- API連携の基本(リクエスト・レスポンス処理)
- ユーザー入力に応じたエラーチェックの考え方

次は、アプリの**見た目をカスタマイズする方法(テーマカラーの変更)**を見ていきましょう!
6. テーマカラーの変更で見た目も自由に
「PySimpleGUIで作ったアプリ、便利だけど見た目がちょっと地味かも…?」
そんな時におすすめなのが、テーマカラー(見た目のスタイル)を変える機能です!
これを使えば、アプリの雰囲気をガラッと変えることができます。
🎨 テーマ変更はたった1行でOK!
PySimpleGUIにはあらかじめ用意されたテーマがたくさんあります。
変更方法はとても簡単で、sg.theme() を使うだけ!
import PySimpleGUI as sg
sg.theme("DarkAmber") # ここでテーマを設定!
layout = [[sg.Text("こんにちは")], [sg.Button("OK")]]
window = sg.Window("テーマサンプル", layout)
このように、アプリのウィンドウを作る前に sg.theme("テーマ名") を書くだけで、見た目が変わります!
📚 主なテーマ一覧(おすすめ)
| テーマ名 | 特徴 |
|---|---|
| DarkAmber | 落ち着いた茶系のダークテーマ |
| LightBlue | 明るく爽やかなブルー系 |
| DarkGrey13 | スタイリッシュなグレーテーマ |
| Topanga | 明るく見やすいグリーン系 |
| DarkBlue3 | 青基調のクールなテーマ |
👇テーマ一覧を確認するには、次のコードを使ってみてください:
import PySimpleGUI as sg
print(sg.theme_list()) # 利用可能なテーマの一覧を表示
🧪 実験してみよう!
いろいろなテーマを試して、自分のアプリに合ったカラーを見つけてみてください。
背景色と文字色の組み合わせで、操作のしやすさや雰囲気も変わってきますよ!

見た目をカスタマイズするときは、文字が読みやすくなるように配慮するとGood!
たとえば背景が暗いときは文字を白く、明るい背景なら黒文字が基本です。
7. まとめ|PySimpleGUIでアプリ開発を始めよう
おつかれさまでした!
ここまで読んでくれたあなたは、Pythonで自分だけのデスクトップアプリを作るための第一歩をしっかり踏み出せました🎉
✅ 今回のおさらい
- PySimpleGUIとは?
→ Python初心者でも簡単に使えるGUIライブラリ。コードがシンプルで直感的! - 基本構成と作り方
→ Window(ウィンドウ)とElement(部品)をレイアウト(リスト)で配置するだけ。 - フォームアプリで実践!
→ 入力・ボタン・テキスト表示の3要素で動くアプリを自作。 - API連携もできる!
→ ZIP CloudのAPIと連携して、郵便番号から住所を取得するアプリも簡単に。 - 見た目のカスタマイズも自由!
→sg.theme()を使えば、好きなテーマでオリジナル感を出せる!
🎯 これからできることは無限大!
今回の知識を応用すれば、たとえばこんなアプリも作れます:
- 簡単なToDoリスト管理アプリ
- Excelデータを扱う入力フォーム(OpenPyXLと連携)
- 天気予報や株価を表示する情報アプリ(API連携)
- 自分専用のツールを友達に配布(PyInstallerで.exe化)
あわせて読みたい
以下の記事もあわせて読めば、アプリ作りの幅がさらに広がります!
- 🔗 【Python入門】自作モジュールの作り方と使い方を初心者向けにやさしく解説!
- 🔗 【Python入門】jsonモジュールの使い方|JSONの読み書きと変換をやさしく解説!
- 🔗 Pythonのargparse入門|コマンドライン引数を初心者向けにやさしく解説!
よくある質問(Q&A)
- QPySimpleGUIは日本語に対応していますか?
- A
はい、日本語の表示・入力は問題なく対応しています。エンコードやフォントによっては表示が崩れることがありますが、基本的には日本語でも安心して使えます。
- QPySimpleGUIはWindows専用ですか?MacやLinuxでも使えますか?
- A
いいえ、Windows・Mac・Linuxすべて対応しています。PythonとTkinterが動作する環境であれば、PySimpleGUIもそのまま使えます。
- Qボタンを押したときの処理を増やしたいのですが、どうすればいいですか?
- A
if event == "ボタン名":の中に実行したい処理をそのまま書けばOKです。
関数を使って処理を分けても見やすくなります。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。