import tkinter as tk
from tkinter import messagebox
import time

class CountdownTimer:
    def __init__(self, root):
        self.root = root
        self.root.title("倒计时定时器")
        self.root.geometry("350x200")

        self.total_seconds = 0
        self.running = False
        self.timer_id = None

        # 时间显示
        self.time_label = tk.Label(
            root, text="00:00:00", font=("Arial", 40)
        )
        self.time_label.pack(pady=20)

        # 输入框
        frame = tk.Frame(root)
        frame.pack(pady=5)

        tk.Label(frame, text="时:").grid(row=0, column=0)
        self.hour = tk.Entry(frame, width=3)
        self.hour.grid(row=0, column=1)
        self.hour.insert(0, "0")

        tk.Label(frame, text="分:").grid(row=0, column=2)
        self.min = tk.Entry(frame, width=3)
        self.min.grid(row=0, column=3)
        self.min.insert(0, "0")

        tk.Label(frame, text="秒:").grid(row=0, column=4)
        self.sec = tk.Entry(frame, width=3)
        self.sec.grid(row=0, column=5)
        self.sec.insert(0, "0")

        # 按钮
        btn_frame = tk.Frame(root)
        btn_frame.pack(pady=10)

        self.btn_start = tk.Button(
            btn_frame, text="开始", command=self.start
        )
        self.btn_start.grid(row=0, column=0, padx=5)

        self.btn_pause = tk.Button(
            btn_frame, text="暂停", command=self.pause, state=tk.DISABLED
        )
        self.btn_pause.grid(row=0, column=1, padx=5)

        self.btn_reset = tk.Button(
            btn_frame, text="重置", command=self.reset
        )
        self.btn_reset.grid(row=0, column=2, padx=5)

    def update_time(self):
        if self.running and self.total_seconds > 0:
            self.total_seconds -= 1
            h = self.total_seconds // 3600
            m = (self.total_seconds % 3600) // 60
            s = self.total_seconds % 60
            self.time_label.config(text=f"{h:02d}:{m:02d}:{s:02d}")
            self.timer_id = self.root.after(1000, self.update_time)
        elif self.total_seconds == 0:
            self.pause()
            messagebox.showinfo("提示", "时间到！⏰")

    def start(self):
        try:
            h = int(self.hour.get())
            m = int(self.min.get())
            s = int(self.sec.get())
        except:
            messagebox.showerror("错误", "请输入数字！")
            return

        if not self.running:
            if self.total_seconds == 0:
                self.total_seconds = h * 3600 + m * 60 + s

            if self.total_seconds <= 0:
                messagebox.showwarning("提示", "请输入有效时间")
                return

            self.running = True
            self.btn_start.config(state=tk.DISABLED)
            self.btn_pause.config(state=tk.NORMAL)
            self.update_time()

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

    def reset(self):
        self.pause()
        self.total_seconds = 0
        self.time_label.config(text="00:00:00")

if __name__ == "__main__":
    root = tk.Tk()
    app = CountdownTimer(root)
    root.mainloop()