import tkinter as tk

class TimerApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Tkinter定时器")
        self.root.geometry("400x250")
        self.root.resizable(False, False)

        # 计时变量
        self.seconds = 0
        self.running = False
        self.task_id = None

        # 时间显示标签
        self.time_label = tk.Label(
            root, text="00:00:00",
            font=("Arial", 48, "bold"),
            fg="#2c3e50"
        )
        self.time_label.pack(pady=30)

        # 按钮容器
        btn_frame = tk.Frame(root)
        btn_frame.pack()

        # 开始按钮
        self.start_btn = tk.Button(
            btn_frame, text="开始", width=8, height=2,
            bg="#27ae60", fg="white", command=self.start_timer
        )
        self.start_btn.grid(row=0, column=0, padx=5)

        # 暂停按钮
        self.pause_btn = tk.Button(
            btn_frame, text="暂停", width=8, height=2,
            bg="#f39c12", fg="white", command=self.pause_timer
        )
        self.pause_btn.grid(row=0, column=1, padx=5)

        # 重置按钮
        self.reset_btn = tk.Button(
            btn_frame, text="重置", width=8, height=2,
            bg="#e74c3c", fg="white", command=self.reset_timer
        )
        self.reset_btn.grid(row=0, column=2, padx=5)

    # 格式化时间：秒转 时:分:秒
    def format_time(self):
        h = self.seconds // 3600
        m = (self.seconds % 3600) // 60
        s = self.seconds % 60
        return f"{h:02d}:{m:02d}:{s:02d}"

    # 计时核心逻辑
    def count_up(self):
        if self.running:
            self.seconds += 1
            self.time_label.config(text=self.format_time())
            # 每隔1000ms递归调用自己
            self.task_id = self.root.after(1000, self.count_up)

    # 开始计时
    def start_timer(self):
        if not self.running:
            self.running = True
            self.count_up()

    # 暂停计时
    def pause_timer(self):
        self.running = False
        if self.task_id:
            self.root.after_cancel(self.task_id)

    # 重置归零
    def reset_timer(self):
        self.running = False
        if self.task_id:
            self.root.after_cancel(self.task_id)
        self.seconds = 0
        self.time_label.config(text="00:00:00")

if __name__ == "__main__":
    window = tk.Tk()
    app = TimerApp(window)
    window.mainloop()