Pythonでプログラミングに慣れてきたら、「GUIアプリを作ってみたい!」と思う人も多いはず。でも、どこから始めればいいのか分からない…そんな初心者向けに、簡単なGUIアプリの作り方を解説します。
1. PythonでGUIアプリを作るには?
PythonでGUIアプリを作るには、TkinterやPyQtなどのライブラリを使います。初心者には標準ライブラリであるTkinterがおすすめです。
Tkinterのインストール
Pythonには標準でTkinterが含まれています。もし入っていない場合は、以下のコマンドでインストールできます。
pip install tk
基本のウィンドウを作る

まずは、Pythonでウィンドウを表示するだけのシンプルなコードを書いてみましょう。
import tkinter as tk # Tkinterライブラリをインポート
# メインウィンドウを作成
root = tk.Tk() # Tkオブジェクトを作成
root.title("シンプルなウィンドウ") # ウィンドウのタイトルを設定
root.geometry("300x200") # ウィンドウのサイズを指定(幅×高さ)
# ウィンドウを表示
root.mainloop() # イベントループを開始
コードの説明:
- import tkinter as tk: Tkinterライブラリを「tk」という短い名前でインポートします
- root = tk.Tk(): アプリのメインウィンドウを作成します
- root.title(): ウィンドウの上部に表示されるタイトルを設定します
- root.geometry(): ウィンドウの大きさを「幅x高さ」の形式で指定します
- root.mainloop(): アプリを実行し、ユーザーの操作を待ち受けるループを開始します
このコードを実行すると、300×200ピクセルのウィンドウが表示されます。
2. 初心者向け!最初に作るべきGUIアプリ5選
① シンプルな電卓アプリ

四則演算ができる簡単な電卓を作ります。
import tkinter as tk # Tkinterライブラリをインポート
def calculate():
try:
result.set(eval(entry.get())) # 入力された数式を計算し、結果をセット
except:
result.set("エラー") # 無効な入力がある場合はエラーを表示
root = tk.Tk()
root.title("電卓")
root.geometry("500x300") # ウィンドウのサイズを指定(幅×高さ)
entry = tk.Entry(root) # ユーザーが数式を入力するためのエントリーウィジェット
entry.pack()
result = tk.StringVar() # 計算結果を格納するための変数
label = tk.Label(root, textvariable=result) # 計算結果を表示するラベル
label.pack()
button = tk.Button(root, text="計算", command=calculate) # 計算ボタン
button.pack()
root.mainloop() # イベントループを開始
コードの説明:
- def calculate(): 計算ボタンが押されたときに実行される関数を定義します
- entry = tk.Entry(root): ユーザーがテキスト(数式)を入力できるフィールドを作成します
- entry.get(): 入力フィールドに入力された文字列を取得します
- eval(): 文字列として入力された数式(例: “2+3*4″)を実際に計算します
- result = tk.StringVar(): 計算結果を保持するための特殊な変数を作成します
- label = tk.Label(): 計算結果を表示するためのテキストラベルを作成します
- button = tk.Button(): クリックできるボタンを作成し、commandパラメータで押したときの動作を指定します
- pack(): ウィジェットをウィンドウ内に配置するメソッドです
ポイント: eval()を使って数式を計算(入力ミスの処理も追加するとより良い)
② ToDoリストアプリ

簡単にタスクを追加・削除できるアプリ。
import tkinter as tk # Tkinterライブラリをインポート
def add_task():
task = entry.get() # ユーザーが入力したタスクを取得
if task:
listbox.insert(tk.END, task) # リストボックスの最後にタスクを追加
entry.delete(0, tk.END) # 入力欄をクリア
def delete_task():
selected = listbox.curselection() # 選択されたタスクのインデックスを取得
if selected:
listbox.delete(selected[0]) # 選択されたタスクを削除
root = tk.Tk()
root.title("ToDoリスト")
root.geometry("500x300") # ウィンドウのサイズを指定(幅×高さ)
entry = tk.Entry(root)
entry.pack()
add_button = tk.Button(root, text="追加", command=add_task) # タスク追加ボタン
add_button.pack()
delete_button = tk.Button(root, text="削除", command=delete_task) # タスク削除ボタン
delete_button.pack()
listbox = tk.Listbox(root) # タスク一覧を表示するリストボックス
listbox.pack()
root.mainloop()
コードの説明:
- def add_task(): 「追加」ボタンが押されたときにタスクを追加する関数です
- def delete_task(): 「削除」ボタンが押されたときに選択されたタスクを削除する関数です
- listbox.insert(tk.END, task): リストの最後にタスクを追加します(
tk.END
は末尾を意味します) - entry.delete(0, tk.END): 入力欄の内容をすべて削除してクリアします
- listbox.curselection(): 現在リスト内で選択されているアイテムのインデックス(位置)を取得します
- listbox = tk.Listbox(root): 複数のアイテムを表示できるリスト形式のウィジェットを作成します
ポイント: Listboxを使ってリスト管理を実装
③ 簡単なメモ帳アプリ

シンプルなメモ帳アプリを作ります。
import tkinter as tk
def save_text():
with open("memo.txt", "w") as file:
file.write(textbox.get("1.0", tk.END))
root = tk.Tk()
root.title("メモ帳")
root.geometry("500x300") # ウィンドウのサイズを指定(幅×高さ)
textbox = tk.Text(root)
textbox.pack()
save_button = tk.Button(root, text="保存", command=save_text)
save_button.pack()
root.mainloop()
コードの説明:
- def save_text(): 「保存」ボタンが押されたときにテキストをファイルに保存する関数です
- with open(“memo.txt”, “w”) as file: 「memo.txt」というファイルを書き込みモード(”w”)で開きます
- textbox = tk.Text(root): 複数行のテキストを入力できるテキストエリアを作成します
- textbox.get(“1.0”, tk.END): テキストエリアの最初(1行目の0文字目)から最後までの内容を取得します
- file.write(): 取得したテキストをファイルに書き込みます
ポイント: Textウィジェットで複数行の入力を受け付ける
④ シンプルなタイマーアプリ

カウントダウンできる簡単なタイマーを作成。
コード
import tkinter as tk
import time
def start_timer():
for t in range(10, -1, -1):
time_label.config(text=str(t))
root.update()
time.sleep(1)
root = tk.Tk()
root.title("タイマー")
root.geometry("500x300") # ウィンドウのサイズを指定(幅×高さ)
time_label = tk.Label(root, text="10")
time_label.pack()
start_button = tk.Button(root, text="スタート", command=start_timer)
start_button.pack()
root.mainloop()
コードの説明:
- import time: 時間関連の機能を使うためのライブラリをインポートします
- def start_timer(): タイマーを開始する関数です
- for t in range(10, -1, -1): 10から0まで1ずつ減少するループを作成します
- time_label.config(text=str(t)): ラベルのテキストをカウントダウンの現在値に更新します
- root.update(): 画面を更新して変更を反映させます
- time.sleep(1): 1秒間処理を停止します(カウントダウンの間隔)
ポイント: time.sleep()を使ってカウントダウンを実装
⑤ 簡単な色選択アプリ

ボタンを押すと色を選べるアプリ。
コード
import tkinter as tk
from tkinter import colorchooser
def choose_color():
color = colorchooser.askcolor()[1]
if color:
root.config(bg=color)
root = tk.Tk()
root.title("色選択アプリ")
root.geometry("500x300") # ウィンドウのサイズを指定(幅×高さ)
color_button = tk.Button(root, text="色を選ぶ", command=choose_color)
color_button.pack()
root.mainloop()
コードの説明:
- from tkinter import colorchooser: Tkinterの色選択ダイアログを使うためのモジュールをインポートします
- def choose_color(): 「色を選ぶ」ボタンが押されたときに実行される関数です
- color = colorchooser.askcolor()[1]: 色選択ダイアログを表示し、選択された色のHEXコード(#RRGGBB形式)を取得します
- root.config(bg=color): ウィンドウの背景色を選択された色に変更します
ポイント: colorchooser.askcolor()を使って色選択機能を実装
ここまでやってきてより深く学んでみたくなったのではないでしょうか。以下記事ではPython講座に特化したプログラミングスクール、【2025年最新版】Python講座で学べるプログラミングスクール10選を徹底比較を紹介しています。レベルアップを図るならスクールを検討してみてはいかがでしょうか。学習の進みが早くなるでしょう。ぜひ参考にしてください。
初心者向け!最初に作るべきGUIアプリ5選 まとめ
初心者でも簡単に作れるPythonのGUIアプリを5つ紹介しました。
- 最初はシンプルなものから挑戦!
- Tkinterなら手軽に始められる!
- 少しずつ機能を追加してレベルアップ!
今回ご紹介したプログラムをベースに機能を発展させて作成してみてください。ターミナルでの動作より視覚的に確認できるので作りがいがあります。
まずはコピペをして動作を確認し、ぜひコードを書き達成感を得てください。プログラミングが一層楽しくなりますよ。