import tkinter as tk
from tkinter import ttk
import time

class TimerGUI:
    def __init__(self, root):
        self.root = root
        self.root.title("图形定时器")
        self.root.geometry("420x260")
        self.root.resizable(False, False)

        # 计时变量
        self.total_seconds = 0
        self.running = False
        self.task_id = None

        # 输入框布局
        frame_input = ttk.Frame(root)
        frame_input.pack(pady=15)

        ttk.Label(frame_input, text="时").grid(row=0, column=1, padx=5)
        ttk.Label(frame_input, text="分").grid(row=0, column=3, padx=5)
        ttk.Label(frame_input, text="秒").grid(row=0, column=5, padx=5)

        self.var_h = tk.StringVar(value="0")
        self.var_m = tk.StringVar(value="0")
        self.var_s = tk.StringVar(value="10")

        ttk.Entry(frame_input, textvariable=self.var_h, width=6, font=("",14)).grid(row=0, column=0)
        ttk.Entry(frame_input, textvariable=self.var_m, width=6, font=("",14)).grid(row=0, column=2)
        ttk.Entry(frame_input, textvariable=self.var_s, width=6, font=("",14)).grid(row=0, column=4)

        # 时间显示
        self.label_time = ttk.Label(root, text="00:00:10", font=("Arial", 36))
        self.label_time.pack(pady=10)

        # 按钮区域
        frame_btn = ttk.Frame(root)
        frame_btn.pack(pady=8)

        ttk.Button(frame_btn, text="开始", command=self.start_timer).grid(row=0, column=0, padx=6)
        ttk.Button(frame_btn, text="暂停", command=self.pause_timer).grid(row=0, column=1, padx=6)
        ttk.Button(frame_btn, text="重置", command=self.reset_timer).grid(row=0, column=2, padx=6)

    def format_time(self, sec):
        h = sec // 3600
        m = (sec % 3600) // 60
        s = sec % 60
        return f"{h:02d}:{m:02d}:{s:02d}"

    def start_timer(self):
        if self.running:
            return
        # 如果还没初始化时间，读取输入
        if self.total_seconds <= 0:
            try:
                h = int(self.var_h.get())
                m = int(self.var_m.get())
                s = int(self.var_s.get())
                self.total_seconds = h * 3600 + m * 60 + s
            except ValueError:
                self.label_time.config(text="输入错误")
                return
        self.running = True
        self.countdown()

    def countdown(self):
        if not self.running:
            return
        if self.total_seconds <= 0:
            self.label_time.config(text="⏰ 时间到！")
            self.running = False
            return

        self.label_time.config(text=self.format_time(self.total_seconds))
        self.total_seconds -= 1
        self.task_id = self.root.after(1000, self.countdown)

    def pause_timer(self):
        self.running = False

    def reset_timer(self):
        self.running = False
        if self.task_id:
            self.root.after_cancel(self.task_id)
        self.total_seconds = 0
        h = int(self.var_h.get() or 0)
        m = int(self.var_m.get() or 0)
        s = int(self.var_s.get() or 0)
        self.total_seconds = h*3600 + m*60 + s
        self.label_time.config(text=self.format_time(self.total_seconds))

if __name__ == "__main__":
    win = tk.Tk()
    app = TimerGUI(win)
    win.mainloop()