import tkinter as tk
from tkinter import ttk
import time

class AncientTimer:
    def __init__(self, root):
        # 主窗口设置
        self.root = root
        self.root.title("计时器")
        self.root.geometry("620x340")
        self.root.resizable(False, False)
        # 古风底色 暗檀木色
        self.bg_color = "#2c2118"
        self.text_color = "#e6c890"  # 鎏金色文字
        self.btn_bg = "#5c3f2e"
        self.btn_hover = "#78543c"
        self.root.configure(bg=self.bg_color)

        # 计时变量
        self.running = False
        self.start_time = 0
        self.pause_offset = 0

        # 时间显示标签
        self.time_label = tk.Label(
            root,
            text="00:00:00.00",
            font=("SimSun", 60, "bold"),
            fg=self.text_color,
            bg=self.bg_color
        )
        self.time_label.pack(pady=45)

        # 按钮容器
        frame_btn = tk.Frame(root, bg=self.bg_color)
        frame_btn.pack()

        # 封装古风按钮
        def create_btn(text, cmd):
            btn = tk.Button(
                frame_btn,
                text=text,
                command=cmd,
                font=("SimSun", 14),
                width=8,
                height=2,
                fg="#f0e2cc",
                bg=self.btn_bg,
                relief=tk.FLAT,
                activebackground=self.btn_hover,
                activeforeground="#ffffff"
            )
            btn.pack(side=tk.LEFT, padx=12)
            return btn

        self.btn_start = create_btn("开始", self.start_timer)
        self.btn_pause = create_btn("暂停", self.pause_timer)
        self.btn_reset = create_btn("重置", self.reset_timer)

        self.update_clock()

    def start_timer(self):
        if not self.running:
            self.running = True
            if self.pause_offset == 0:
                self.start_time = time.time()
            else:
                self.start_time = time.time() - self.pause_offset
                self.pause_offset = 0

    def pause_timer(self):
        if self.running:
            self.running = False
            self.pause_offset = time.time() - self.start_time

    def reset_timer(self):
        self.running = False
        self.pause_offset = 0
        self.time_label.config(text="00:00:00.00")

    def update_clock(self):
        if self.running:
            elapsed = time.time() - self.start_time
            hour = int(elapsed // 3600)
            minute = int((elapsed % 3600) // 60)
            second = elapsed % 60
            time_str = f"{hour:02d}:{minute:02d}:{second:05.2f}"
            self.time_label.config(text=time_str)
        self.root.after(20, self.update_clock)


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