import tkinter as tk
from tkinter import font

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

        self.running = False
        self.elapsed_time = 0  # 单位：毫秒

        # 显示时间的标签
        self.time_font = font.Font(family="Helvetica", size=36, weight="bold")
        self.time_label = tk.Label(root, text="00:00:00", font=self.time_font)
        self.time_label.pack(pady=20)

        # 按钮框架
        button_frame = tk.Frame(root)
        button_frame.pack(pady=10)

        self.start_button = tk.Button(button_frame, text="开始", width=8, command=self.start)
        self.pause_button = tk.Button(button_frame, text="暂停", width=8, command=self.pause)
        self.reset_button = tk.Button(button_frame, text="重置", width=8, command=self.reset)

        self.start_button.grid(row=0, column=0, padx=5)
        self.pause_button.grid(row=0, column=1, padx=5)
        self.reset_button.grid(row=0, column=2, padx=5)

        self.update_display()

    def start(self):
        if not self.running:
            self.running = True
            self.count_up()

    def pause(self):
        self.running = False

    def reset(self):
        self.running = False
        self.elapsed_time = 0
        self.update_display()

    def count_up(self):
        if self.running:
            self.elapsed_time += 10  # 每10毫秒更新一次（更平滑）
            self.update_display()
            self.root.after(10, self.count_up)  # 递归调用

    def update_display(self):
        # 将毫秒转换为 时:分:秒.百分之一秒
        total_seconds = self.elapsed_time // 1000
        hours = total_seconds // 3600
        minutes = (total_seconds % 3600) // 60
        seconds = total_seconds % 60
        centiseconds = (self.elapsed_time % 1000) // 10  # 百分之一秒（0~99）

        time_str = f"{hours:02d}:{minutes:02d}:{seconds:02d}.{centiseconds:02d}"
        self.time_label.config(text=time_str)

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