import tkinter as tk
from datetime import datetime, timedelta

class TimerApp:
    def __init__(self, root):
        self.root = root
        self.root.title("计时器")
        self.root.geometry("300x200")
        
        # 计时器状态
        self.running = False
        self.start_time = None
        self.elapsed_time = timedelta(0)
        
        # 创建界面
        self.setup_ui()
        
    def setup_ui(self):
        # 显示时间的标签
        self.time_label = tk.Label(
            self.root, 
            text="00:00:00.000", 
            font=("Arial", 28, "bold"),
            bg="black",
            fg="white"
        )
        self.time_label.pack(pady=20)
        
        # 按钮框架
        button_frame = tk.Frame(self.root)
        button_frame.pack(pady=20)
        
        # 开始/暂停按钮
        self.start_button = tk.Button(
            button_frame,
            text="开始",
            command=self.toggle_timer,
            width=8,
            bg="#4CAF50",
            fg="white",
            font=("Arial", 12)
        )
        self.start_button.pack(side=tk.LEFT, padx=5)
        
        # 重置按钮
        self.reset_button = tk.Button(
            button_frame,
            text="重置",
            command=self.reset_timer,
            width=8,
            bg="#f44336",
            fg="white",
            font=("Arial", 12)
        )
        self.reset_button.pack(side=tk.LEFT, padx=5)
        
        # 记录按钮
        self.record_button = tk.Button(
            self.root,
            text="记录当前时间",
            command=self.record_time,
            bg="#2196F3",
            fg="white",
            font=("Arial", 10)
        )
        self.record_button.pack(pady=5)
        
        # 记录列表
        self.record_listbox = tk.Listbox(
            self.root,
            height=4,
            font=("Courier", 10)
        )
        self.record_listbox.pack(pady=5, fill=tk.BOTH, padx=20)
        
    def toggle_timer(self):
        """开始/暂停计时器"""
        if not self.running:
            # 开始计时
            self.running = True
            self.start_button.config(text="暂停", bg="#FF9800")
            self.start_time = datetime.now() - self.elapsed_time
            self.update_timer()
        else:
            # 暂停计时
            self.running = False
            self.start_button.config(text="继续", bg="#4CAF50")
            
    def update_timer(self):
        """更新计时器显示"""
        if self.running:
            current_time = datetime.now()
            self.elapsed_time = current_time - self.start_time
            
            # 格式化显示时间
            hours = self.elapsed_time.seconds // 3600
            minutes = (self.elapsed_time.seconds // 60) % 60
            seconds = self.elapsed_time.seconds % 60
            milliseconds = self.elapsed_time.microseconds // 1000
            
            time_str = f"{hours:02d}:{minutes:02d}:{seconds:02d}.{milliseconds:03d}"
            self.time_label.config(text=time_str)
            
            # 每10ms更新一次
            self.root.after(10, self.update_timer)
            
    def reset_timer(self):
        """重置计时器"""
        self.running = False
        self.elapsed_time = timedelta(0)
        self.time_label.config(text="00:00:00.000")
        self.start_button.config(text="开始", bg="#4CAF50")
        self.record_listbox.delete(0, tk.END)
        
    def record_time(self):
        """记录当前时间"""
        if self.running or self.elapsed_time.total_seconds() > 0:
            time_str = self.time_label.cget("text")
            self.record_listbox.insert(tk.END, f"记录 {self.record_listbox.size()+1}: {time_str}")

def main():
    root = tk.Tk()
    app = TimerApp(root)
    root.mainloop()

if __name__ == "__main__":
    main()