import tkinter as tk
from tkinter import ttk, messagebox

class TimerApp:
    def __init__(self, root):
        self.root = root
        self.root.title("定时器")
        self.root.geometry("420x320")
        self.root.resizable(False, False)

        self.running = False
        self.remaining = 0

        # 标题
        title_label = ttk.Label(root, text="定时器", font=("Microsoft YaHei", 20))
        title_label.pack(pady=10)

        # 输入框 时 分 秒
        frame_input = ttk.Frame(root)
        frame_input.pack(pady=5)

        ttk.Label(frame_input, text="时").grid(row=0, column=0)
        self.var_h = tk.StringVar(value="0")
        ttk.Entry(frame_input, textvariable=self.var_h, width=6, font=("Microsoft YaHei",14)).grid(row=0, column=1, padx=3)

        ttk.Label(frame_input, text="分").grid(row=0, column=2)
        self.var_m = tk.StringVar(value="0")
        ttk.Entry(frame_input, textvariable=self.var_m, width=6, font=("Microsoft YaHei",14)).grid(row=0, column=3, padx=3)

        ttk.Label(frame_input, text="秒").grid(row=0, column=4)
        self.var_s = tk.StringVar(value="0")
        ttk.Entry(frame_input, textvariable=self.var_s, width=6, font=("Microsoft YaHei",14)).grid(row=0, column=5, padx=3)

        # 倒计时大显示
        self.time_label = ttk.Label(root, text="00:00:00", font=("Microsoft YaHei", 36))
        self.time_label.pack(pady=15)

        # 按钮
        btn_frame = ttk.Frame(root)
        btn_frame.pack()
        self.btn_start = ttk.Button(btn_frame, text="开始", command=self.start)
        self.btn_start.grid(row=0, column=0, padx=5)
        self.btn_pause = ttk.Button(btn_frame, text="暂停", command=self.pause, state=tk.DISABLED)
        self.btn_pause.grid(row=0, column=1, padx=5)
        self.btn_reset = ttk.Button(btn_frame, text="重置", command=self.reset)
        self.btn_reset.grid(row=0, column=2, padx=5)

    def refresh_text(self):
        h = self.remaining // 3600
        m = (self.remaining % 3600) // 60
        s = self.remaining % 60
        self.time_label.config(text=f"{h:02d}:{m:02d}:{s:02d}")

    def start(self):
        if not self.running:
            try:
                h = int(self.var_h.get())
                m = int(self.var_m.get())
                s = int(self.var_s.get())
            except:
                messagebox.showerror("错误", "请输入数字！")
                return
            self.remaining = h * 3600 + m * 60 + s
            if self.remaining <= 0:
                messagebox.showwarning("提示", "时间不能为0！")
                return
        self.running = True
        self.btn_start.config(state=tk.DISABLED)
        self.btn_pause.config(state=tk.NORMAL)
        self.count()

    def count(self):
        if self.running and self.remaining > 0:
            self.remaining -= 1
            self.refresh_text()
            self.root.after(1000, self.count)
        elif self.remaining <= 0:
            self.running = False
            self.btn_start.config(state=tk.NORMAL)
            self.btn_pause.config(state=tk.DISABLED)
            messagebox.showinfo("提醒", "时间到！")

    def pause(self):
        self.running = False
        self.btn_start.config(state=tk.NORMAL)
        self.btn_pause.config(state=tk.DISABLED)

    def reset(self):
        self.running = False
        self.remaining = 0
        self.refresh_text()
        self.btn_start.config(state=tk.NORMAL)
        self.btn_pause.config(state=tk.DISABLED)
        self.var_h.set("0")
        self.var_m.set("0")
        self.var_s.set("0")

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