import tkinter as tk
from tkinter import messagebox


class TimerApp:
    def __init__(self, root):
        self.root = root
        self.root.title("计时器")
        self.root.geometry("300x200")
        self.root.resizable(False, False)

        self.seconds = 0
        self.is_running = False
        self.job = None  # 用于存储 after 的回调 ID

        # 时间显示标签
        self.time_label = tk.Label(
            root, text="00:00:00", font=("Helvetica", 32))
        self.time_label.pack(pady=20)

        # 按钮框架
        button_frame = tk.Frame(root)
        button_frame.pack()

        self.start_button = tk.Button(
            button_frame, text="开始", width=8, command=self.start)
        self.start_button.grid(row=0, column=0, padx=5)

        self.pause_button = tk.Button(
            button_frame, text="暂停", width=8, command=self.pause)
        self.pause_button.grid(row=0, column=1, padx=5)

        self.reset_button = tk.Button(
            button_frame, text="重置", width=8, command=self.reset)
        self.reset_button.grid(row=0, column=2, padx=5)

    def update_time(self):
        if self.is_running:
            self.seconds += 1
            hours = self.seconds // 3600
            minutes = (self.seconds % 3600) // 60
            secs = self.seconds % 60
            time_str = f"{hours:02d}:{minutes:02d}:{secs:02d}"
            self.time_label.config(text=time_str)
            self.job = self.root.after(1000, self.update_time)

    def start(self):
        if not self.is_running:
            self.is_running = True
            self.update_time()

    def pause(self):
        self.is_running = False
        if self.job:
            self.root.after_cancel(self.job)
            self.job = None

    def reset(self):
        self.is_running = False
        if self.job:
            self.root.after_cancel(self.job)
            self.job = None
        self.seconds = 0
        self.time_label.config(text="00:00:00")


if __name__ == "__main__":
    root = tk.Tk()
    app = TimerApp(root)
    root.mainloop()
