From a24f88fb68c2e56b9c2869a04e4b1e18f0a3d3a4 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 25 Aug 2025 14:04:04 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8C=AF=E3=82=8A=E8=BF=94=E3=82=8A?= =?UTF-8?q?=E6=A9=9F=E8=83=BD=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ユーザーがその日の振り返りを記録できるように、以下の機能を追加しました。 - 振り返りを入力するためのテキストエリアと保存ボタンをUIに追加 - 入力された振り返りを`reflection.txt`に保存する機能 - アプリケーション起動時に保存された振り返りを読み込む機能 - アプリケーション終了時にも振り返りを自動的に保存する機能 これにより、REQ-機能-005: 振り返りの記録 の要件を満たします。 --- MyProject/bujo_app.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/MyProject/bujo_app.py b/MyProject/bujo_app.py index bb82a63..3d99d19 100644 --- a/MyProject/bujo_app.py +++ b/MyProject/bujo_app.py @@ -4,6 +4,7 @@ # データファイル名 DATA_FILE = "tasks.txt" +REFLECTION_FILE = "reflection.txt" # 振り返り用データファイル MAX_TASK_LENGTH = 255 class BuJoApp: @@ -33,8 +34,22 @@ def __init__(self, master): self.scrollbar.pack(side=tk.RIGHT, fill="y") self.task_listbox.config(yscrollcommand=self.scrollbar.set) - # タスクデータの読み込み + # 振り返り入力フレーム + self.reflection_frame = tk.Frame(master) + self.reflection_frame.pack(pady=10) + + self.reflection_label = tk.Label(self.reflection_frame, text="今日の振り返り:") + self.reflection_label.pack(anchor='w') # ラベルを左寄せで配置 + + self.reflection_text = tk.Text(self.reflection_frame, width=60, height=5) + self.reflection_text.pack(pady=5) + + self.save_reflection_button = tk.Button(self.reflection_frame, text="振り返りを保存", command=self.save_reflection) + self.save_reflection_button.pack() + + # データの読み込み self.load_tasks() + self.load_reflection() # アプリケーション終了時の保存 master.protocol("WM_DELETE_WINDOW", self.on_closing) @@ -53,6 +68,15 @@ def add_task(self): self.task_entry.delete(0, tk.END) self.save_tasks() # タスク追加時に保存 + def save_reflection(self, show_message=True): + """振り返りをファイルに保存する""" + reflection_content = self.reflection_text.get("1.0", tk.END).strip() + # ファイルが存在しない場合でも、空のファイルが作成される + with open(REFLECTION_FILE, "w", encoding="utf-8") as f: + f.write(reflection_content) + if show_message: + messagebox.showinfo("保存完了", "振り返りを保存しました。") + def load_tasks(self): """ファイルからタスクを読み込む""" if os.path.exists(DATA_FILE): @@ -60,6 +84,13 @@ def load_tasks(self): for line in f: self.task_listbox.insert(tk.END, line.strip()) + def load_reflection(self): + """ファイルから振り返りを読み込む""" + if os.path.exists(REFLECTION_FILE): + with open(REFLECTION_FILE, "r", encoding="utf-8") as f: + reflection_content = f.read() + self.reflection_text.insert("1.0", reflection_content) + def save_tasks(self): """タスクをファイルに保存する""" with open(DATA_FILE, "w", encoding="utf-8") as f: @@ -69,6 +100,7 @@ def save_tasks(self): def on_closing(self): """アプリケーション終了時の処理""" self.save_tasks() + self.save_reflection(show_message=False) # メッセージなしで振り返りを保存 self.master.destroy() # アプリケーションの実行