Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 42 additions & 6 deletions MyProject/bujo_app.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import tkinter as tk
from tkinter import messagebox
from tkinter import messagebox, font
import os

# データファイル名
Expand All @@ -11,11 +11,15 @@ def __init__(self, master):
self.master = master
master.title("デジタルバレットジャーナル")

# フォントの定義
self.default_font = font.Font(family="Helvetica", size=10)
self.strikethrough_font = font.Font(family="Helvetica", size=10, overstrike=True)

# タスク入力フレーム
self.task_frame = tk.Frame(master)
self.task_frame.pack(pady=10)

self.task_entry = tk.Entry(self.task_frame, width=50)
self.task_entry = tk.Entry(self.task_frame, width=50, font=self.default_font)
self.task_entry.pack(side=tk.LEFT, padx=5)
self.task_entry.bind("<KeyRelease>", self.check_task_length) # 文字数制限のイベントバインド

Expand All @@ -26,8 +30,9 @@ def __init__(self, master):
self.task_list_frame = tk.Frame(master)
self.task_list_frame.pack(pady=10)

self.task_listbox = tk.Listbox(self.task_list_frame, width=60, height=15)
self.task_listbox = tk.Listbox(self.task_list_frame, width=60, height=15, font=self.default_font)
self.task_listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
self.task_listbox.bind("<Button-1>", self.toggle_task_status)

self.scrollbar = tk.Scrollbar(self.task_list_frame, orient="vertical", command=self.task_listbox.yview)
self.scrollbar.pack(side=tk.RIGHT, fill="y")
Expand All @@ -49,16 +54,19 @@ def add_task(self):
"""タスクを追加する"""
task = self.task_entry.get().strip()
if task:
self.task_listbox.insert(tk.END, task)
self.task_listbox.insert(tk.END, f"☐ {task}")
self.task_entry.delete(0, tk.END)
self.save_tasks() # タスク追加時に保存

def load_tasks(self):
"""ファイルからタスクを読み込む"""
if os.path.exists(DATA_FILE):
with open(DATA_FILE, "r", encoding="utf-8") as f:
for line in f:
self.task_listbox.insert(tk.END, line.strip())
for i, line in enumerate(f):
task_text = line.strip()
self.task_listbox.insert(tk.END, task_text)
if task_text.startswith("☑ "):
self.task_listbox.itemconfig(i, {'font': self.strikethrough_font})

def save_tasks(self):
"""タスクをファイルに保存する"""
Expand All @@ -71,6 +79,34 @@ def on_closing(self):
self.save_tasks()
self.master.destroy()

def toggle_task_status(self, event):
"""タスクの完了状態を切り替える"""
selected_index = self.task_listbox.nearest(event.y)
if selected_index == -1:
return

task_text = self.task_listbox.get(selected_index)

if task_text.startswith("☑ "):
# タスクを未完了にする
new_task_text = f"☐ {task_text[2:]}"
self.task_listbox.delete(selected_index)
self.task_listbox.insert(selected_index, new_task_text)
self.task_listbox.itemconfig(selected_index, {'font': self.default_font})
else:
# タスクを完了にする
new_task_text = f"☑ {task_text[2:]}"
self.task_listbox.delete(selected_index)
self.task_listbox.insert(selected_index, new_task_text)
self.task_listbox.itemconfig(selected_index, {'font': self.strikethrough_font})

# 選択状態を更新
self.task_listbox.selection_clear(0, tk.END)
self.task_listbox.selection_set(selected_index)
self.task_listbox.activate(selected_index)

self.save_tasks()

# アプリケーションの実行
if __name__ == "__main__":
root = tk.Tk()
Expand Down