🧠 はじめに
PythonでGUIアプリを作ってみたいけど、
「何から始めればいいかわからない…」という方、いませんか?
そんな時は、ChatGPTを相棒にすれば安心です!
この記事では、ChatGPTに相談しながら
📋ToDoリストと⏰ポモドーロタイマーを組み合わせたアプリを作成した体験を共有します。
✅ GUIアプリの構築方法
✅ ChatGPTの活用方法
✅ 実用的なコードの紹介
を初心者向けに丁寧に解説します。
🤝 ChatGPTに聞いたこと
今回の開発で、ChatGPTにはこんな質問をしました:
PythonでToDoリストアプリを作るには?tkinterでボタンや入力欄を使いたいポモドーロタイマーを追加するには?UIを止めずにタイマーを動かすには?作業中のタスク名を表示したい
質問に対する返答だけでなく、サンプルコードや改善提案までしてくれるので、本当に頼れる開発パートナーでした!
🖥️ 作ったアプリの機能
| 機能 | 内容 |
|---|---|
| ✅ タスク管理 | タスクの追加・削除ができるToDoリスト |
| ⏲️ ポモドーロタイマー | 25分作業+5分休憩のサイクルを回せる |
| 🔁 選択タスクに連動 | 選んだタスクが作業中に画面に表示される |
🧪 完成コード
import tkinter as tk
from tkinter import messagebox
import time
import threading
tasks = []
timer_running = False
pomodoro_minutes = 25
break_minutes = 5
def add_task():
task = task_entry.get().strip()
if task:
tasks.append(task)
task_listbox.insert(tk.END, task)
task_entry.delete(0, tk.END)
else:
messagebox.showwarning("入力エラー", "タスクを入力してください。")
def delete_task():
selected = task_listbox.curselection()
if selected:
index = selected[0]
tasks.pop(index)
task_listbox.delete(index)
else:
messagebox.showinfo("選択なし", "削除するタスクを選んでください。")
def start_pomodoro():
global timer_running
if timer_running:
return
selected = task_listbox.curselection()
if not selected:
messagebox.showinfo("タスク未選択", "タイマーを開始するにはタスクを選択してください。")
return
current_task = tasks[selected[0]]
task_label.config(text=f"作業中: {current_task}")
timer_thread = threading.Thread(target=lambda: run_timer(current_task))
timer_thread.daemon = True
timer_thread.start()
def run_timer(task_name):
global timer_running
timer_running = True
countdown(pomodoro_minutes * 60, "作業タイム")
countdown(break_minutes * 60, "休憩タイム")
task_label.config(text="🍅 タイマー完了!")
timer_running = False
def countdown(seconds, label):
for remaining in range(seconds, 0, -1):
if not timer_running:
break
mins, secs = divmod(remaining, 60)
time_str = f"{label} ⏳ {mins:02}:{secs:02}"
timer_label.config(text=time_str)
time.sleep(1)
def reset_timer():
global timer_running
timer_running = False
timer_label.config(text="タイマー停止中")
task_label.config(text="")
# GUI構築
root = tk.Tk()
root.title("🍅 ポモドーロToDoアプリ")
task_entry = tk.Entry(root, width=40)
task_entry.pack(pady=5)
add_button = tk.Button(root, text="追加", command=add_task)
add_button.pack()
task_listbox = tk.Listbox(root, width=50, height=8)
task_listbox.pack(pady=5)
delete_button = tk.Button(root, text="削除", command=delete_task)
delete_button.pack()
task_label = tk.Label(root, text="", font=("Helvetica", 12))
task_label.pack(pady=10)
timer_label = tk.Label(root, text="タイマー停止中", font=("Helvetica", 18), fg="green")
timer_label.pack(pady=10)
start_button = tk.Button(root, text="▶️ タイマー開始", command=start_pomodoro)
start_button.pack(pady=5)
reset_button = tk.Button(root, text="⏹️ リセット", command=reset_timer)
reset_button.pack(pady=5)
root.mainloop()
🧪 完成イメージ
🧠 工夫ポイント
| ポイント | 説明 |
|---|---|
threading |
タイマーを別スレッドで動かしてUIが固まらないようにする |
Labelでタスク名表示 |
タイマー中は対象タスク名を明示的に表示して集中しやすく |
messagebox |
操作エラーをポップアップで丁寧に通知 |
✨ 作ってみて感じたこと
- ChatGPTとの開発はめちゃくちゃ楽しい!
- バグで止まっても、すぐ質問して解決できるのでストレスが少ない
- 作って動いたときの喜びが大きい!(達成感🔥)
初心者でも「ChatGPT + Python + tkinter」で、
1人で使える本格的なツールが作れるという自信になりました。
🤖 ChatGPT活用Tips
ChatGPTにお願いするコツは、「何をしたいか」を明確に伝えることです!
🙅♂️ 悪い例:
→ タイマー作って
🙆♀️ 良い例:
→ tkinterでポモドーロタイマー(25分→5分休憩)を作るコードを教えて。UIは止まらないようにしたい。
📌 今後のアイデア(次の記事に向けて)
- 💾 作業履歴の保存(ログ記録機能)
- 📊 日別作業の可視化(棒グラフ)
- ☁️ Googleカレンダー連携
- 🗂️ カテゴリ別ToDo管理
📝 まとめ
ChatGPTと一緒なら、Python初心者でもGUIアプリ開発が楽しめます!
今回のアプリは以下の技術がぎゅっと詰まっています:
-
tkinterでGUI構築 -
threadingでタイマー管理 -
ChatGPTで設計・実装サポート
「作って楽しい」「使って便利」なアプリ、ぜひ一緒に育ててみてください!
