import tkinter as tk
import time

class CartoonTimer:
    def __init__(self, root):
        self.root = root
        self.root.title("⏰ 卡通计时器 ⏰")
        self.root.geometry("400x500")
        self.root.configure(bg='#FFE6F2')
        
        # 计时器状态
        self.running = False
        self.start_time = 0
        self.elapsed_time = 0
        
        # 创建界面
        self.create_ui()
        
    def create_ui(self):
        # 标题
        title = tk.Label(self.root, text="⏰ 卡通计时器 ⏰", 
                        font=("Comic Sans MS", 24, "bold"),
                        bg='#FF6B8B', fg='white', pady=20)
        title.pack(fill='x')
        
        # 时间显示
        self.time_label = tk.Label(self.root, text="00:00:00.00",
                                  font=("Courier New", 36, "bold"),
                                  bg='white', fg='#4ECDC4',
                                  relief='sunken', bd=5,
                                  padx=20, pady=20)
        self.time_label.pack(pady=20, padx=20, fill='x')
        
        # 卡通角色
        self.emoji = tk.Label(self.root, text="😊", 
                             font=("Arial", 60),
                             bg='#FFE6F2')
        self.emoji.pack(pady=10)
        
        # 按钮
        btn_frame = tk.Frame(self.root, bg='#FFE6F2')
        btn_frame.pack(pady=20)
        
        # 开始按钮
        self.start_btn = tk.Button(btn_frame, text="▶️ 开始", 
                                 font=("Arial", 16, "bold"),
                                 bg='#4ECDC4', fg='white',
                                 command=self.start_timer,
                                 padx=20, pady=10)
        self.start_btn.grid(row=0, column=0, padx=5)
        
        # 暂停按钮
        self.pause_btn = tk.Button(btn_frame, text="⏸️ 暂停", 
                                 font=("Arial", 16, "bold"),
                                 bg='#FF9E6D', fg='white',
                                 command=self.pause_timer,
                                 padx=20, pady=10,
                                 state='disabled')
        self.pause_btn.grid(row=0, column=1, padx=5)
        
        # 重置按钮
        self.reset_btn = tk.Button(btn_frame, text="🔄 重置", 
                                 font=("Arial", 16, "bold"),
                                 bg='#FF6B8B', fg='white',
                                 command=self.reset_timer,
                                 padx=20, pady=10)
        self.reset_btn.grid(row=0, column=2, padx=5)
        
        # 计次按钮
        self.lap_btn = tk.Button(btn_frame, text="📝 计次", 
                               font=("Arial", 12, "bold"),
                               bg='#FFD166', fg='white',
                               command=self.add_lap,
                               padx=15, pady=5)
        self.lap_btn.grid(row=1, column=0, columnspan=3, pady=10)
        self.lap_btn.config(state='disabled')
        
        # 计次列表
        self.lap_listbox = tk.Listbox(self.root, height=6,
                                     font=("Arial", 10),
                                     bg='white')
        self.lap_listbox.pack(pady=10, padx=20, fill='both')
        
        # 状态标签
        self.status = tk.Label(self.root, text="就绪", 
                              font=("Arial", 12),
                              bg='#FFE6F2', fg='#666666')
        self.status.pack(pady=5)
        
    def start_timer(self):
        if not self.running:
            self.running = True
            self.start_time = time.time() - self.elapsed_time
            self.start_btn.config(state='disabled')
            self.pause_btn.config(state='normal')
            self.reset_btn.config(state='normal')
            self.lap_btn.config(state='normal')
            self.emoji.config(text="😃")
            self.status.config(text="计时中...")
            self.update_timer()
    
    def pause_timer(self):
        if self.running:
            self.running = False
            self.start_btn.config(state='normal', text="▶️ 继续")
            self.pause_btn.config(state='disabled')
            self.emoji.config(text="😴")
            self.status.config(text="已暂停")
    
    def reset_timer(self):
        self.running = False
        self.elapsed_time = 0
        self.start_btn.config(state='normal', text="▶️ 开始")
        self.pause_btn.config(state='disabled')
        self.lap_btn.config(state='disabled')
        self.time_label.config(text="00:00:00.00")
        self.emoji.config(text="😊")
        self.status.config(text="就绪")
        self.lap_listbox.delete(0, tk.END)
    
    def add_lap(self):
        if self.running:
            current_time = time.time() - self.start_time
            hours = int(current_time // 3600)
            minutes = int((current_time % 3600) // 60)
            seconds = int(current_time % 60)
            milliseconds = int((current_time % 1) * 100)
            
            lap_time = f"{hours:02d}:{minutes:02d}:{seconds:02d}.{milliseconds:02d}"
            self.lap_listbox.insert(0, f"计次 {self.lap_listbox.size()+1}: {lap_time}")
    
    def update_timer(self):
        if self.running:
            self.elapsed_time = time.time() - self.start_time
            hours = int(self.elapsed_time // 3600)
            minutes = int((self.elapsed_time % 3600) // 60)
            seconds = int(self.elapsed_time % 60)
            milliseconds = int((self.elapsed_time % 1) * 100)
            
            time_str = f"{hours:02d}:{minutes:02d}:{seconds:02d}.{milliseconds:02d}"
            self.time_label.config(text=time_str)
            
            # 每10毫秒更新一次
            self.root.after(10, self.update_timer)

# 运行程序
if __name__ == "__main__":
    root = tk.Tk()
    app = CartoonTimer(root)
    root.mainloop()