import tkinter as tk
from tkinter import messagebox

class TimerApp:
    def __init__(self, root):
        self.root = root
        self.root.title("简易倒计时定时器")
        self.root.geometry("380x220")
        self.root.resizable(False, False)

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

        # 输入框布局
        frame_input = tk.Frame(root)
        frame_input.pack(pady=20)

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

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

        self.entry_h = tk.Entry(frame_input, textvariable=self.var_h, width=5, font=("Arial",16))
        self.entry_h.grid(row=0, column=0, padx=4)
        self.entry_m = tk.Entry(frame_input, textvariable=self.var_m, width=5, font=("Arial",16))
        self.entry_m.grid(row=0, column=2, padx=4)
        self.entry_s = tk.Entry(frame_input, textvariable=self.var_s, width=5, font=("Arial",16))
        self.entry_s.grid(row=0, column=4, padx=4)

        # 时间显示标签
        self.label_time = tk.Label(root, text="00:00:10", font=("Arial",30,"bold"), fg="#222222")
        self.label_time.pack()

        # 按钮区域
        frame_btn = tk.Frame(root)
        frame_btn.pack(pady=20)

        self.btn_start = tk.Button(frame_btn, text="开始", width=8, command=self.start_timer, bg="#4CAF50", fg="white")
        self.btn_start.grid(row=0, column=0, padx=5)
        self.btn_pause = tk.Button(frame_btn, text="暂停", width=8, command=self.pause_timer, bg="#FF9800", fg="white")
        self.btn_pause.grid(row=0, column=1, padx=5)
        self.btn_reset = tk.Button(frame_btn, text="重置", width=8, command=self.reset_timer, bg="#f44336", fg="white")
        self.btn_reset.grid(row=0, column=2, padx=5)

    def update_display(self):
        h = self.total_seconds // 3600
        m = (self.total_seconds % 3600) // 60
        s = self.total_seconds % 60
        self.label_time.config(text=f"{h:02d}:{m:02d}:{s:02d}")

    def start_timer(self):
        if self.running:
            return
        # 初次启动读取输入
        if self.after_id is None:
            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
                if self.total_seconds <= 0:
                    messagebox.showwarning("提示", "请输入大于0的时间！")
                    return
            except ValueError:
                messagebox.showerror("错误", "请输入有效的数字！")
                return
        self.running = True
        self.countdown()

    def countdown(self):
        if not self.running:
            return
        if self.total_seconds <= 0:
            self.running = False
            messagebox.showinfo("时间到！", "倒计时结束啦！")
            self.after_id = None
            return
        self.total_seconds -= 1
        self.update_display()
        self.after_id = self.root.after(1000, self.countdown)

    def pause_timer(self):
        self.running = False

    def reset_timer(self):
        self.running = False
        if self.after_id:
            self.root.after_cancel(self.after_id)
            self.after_id = None
        self.total_seconds = 0
        self.update_display()

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