import tkinter as tk
from time import time

class Timer:
    def __init__(self, root):
        self.root = root
        self.root.title("Python 计时器")
        self.root.geometry("350x200")
        
        # 计时变量
        self.start_time = 0
        self.running = False
        self.elapsed_time = 0

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

        # 按钮框架
        self.frame = tk.Frame(root)
        self.frame.pack()

        # 按钮
        self.start_btn = tk.Button(
            self.frame, 
            text="开始", 
            width=8, 
            command=self.start
        )
        self.start_btn.grid(row=0, column=0, padx=5)

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

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

    def update_time(self):
        if self.running:
            current_time = time() - self.start_time + self.elapsed_time
            # 格式化时间：时:分:秒.百分秒
            minutes = int(current_time // 60)
            seconds = current_time % 60
            hours = minutes // 60
            display = f"{hours:02d}:{minutes%60:02d}:{seconds:05.2f}"
            self.time_label.config(text=display)
            # 每10毫秒刷新一次
            self.root.after(10, self.update_time)

    def start(self):
        if not self.running:
            self.start_time = time()
            self.running = True
            self.update_time()
            self.start_btn.config(state=tk.DISABLED)
            self.pause_btn.config(state=tk.NORMAL)

    def pause(self):
        if self.running:
            self.running = False
            self.elapsed_time += time() - self.start_time
            self.start_btn.config(state=tk.NORMAL)
            self.pause_btn.config(state=tk.DISABLED)

    def reset(self):
        self.running = False
        self.elapsed_time = 0
        self.time_label.config(text="00:00:00.00")
        self.start_btn.config(state=tk.NORMAL)
        self.pause_btn.config(state=tk.DISABLED)

if __name__ == "__main__":
    main_root = tk.Tk()
    app = Timer(main_root)
    main_root.mainloop()