
import tkinter as tk
from tkinter import font

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

        # 计时总秒数
        self.seconds = 0
        self.running = False
        self.task_id = None

        # 字体设置
        time_font = font.Font(size=48, weight="bold")
        btn_font = font.Font(size=14)

        # 时间显示标签
        self.time_label = tk.Label(root, text="00:00:00", font=time_font, padx=20, pady=30)
        self.time_label.pack()

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

        self.start_btn = tk.Button(frame, text="开始", font=btn_font, width=8, command=self.start_timer)
        self.start_btn.grid(row=0, column=0, padx=5)

        self.pause_btn = tk.Button(frame, text="暂停", font=btn_font, width=8, command=self.pause_timer)
        self.pause_btn.grid(row=0, column=1, padx=5)

        self.reset_btn = tk.Button(frame, text="重置", font=btn_font, width=8, command=self.reset_timer)
        self.reset_btn.grid(row=0, column=2, padx=5)

    def update_display(self):
        # 秒数转 时:分:秒
        h = self.seconds // 3600
        m = (self.seconds % 3600) // 60
        s = self.seconds % 60
        self.time_label.config(text=f"{h:02d}:{m:02d}:{s:02d}")

    def timer_loop(self):
        if self.running:
            self.seconds += 1
            self.update_display()
            self.task_id = self.root.after(1000, self.timer_loop)

    def start_timer(self):
        if not self.running:
            self.running = True
            self.timer_loop()

    def pause_timer(self):
        self.running = False

    def reset_timer(self):
        self.running = False
        if self.task_id:
            self.root.after_cancel(self.task_id)
        self.seconds = 0
        self.update_display()

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