import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("🌡️ 温度单位转换器")
root.geometry("380x280")
root.resizable(False, False)

# ========== 变量 ==========
input_var = tk.StringVar(value="0")
unit_from = tk.StringVar(value="℃")
unit_to = tk.StringVar(value="℉")
result_var = tk.StringVar(value="—")

# ========== 温度转换逻辑 ==========
def convert():
    try:
        val = float(input_var.get())
    except:
        result_var.set("请输入有效数字")
        return

    f, t = unit_from.get(), unit_to.get()

    # 先统一转成摄氏度
    if f == "℉":
        c = (val - 32) * 5 / 9
    elif f == "K":
        c = val - 273.15
    else:  # ℃
        c = val

    # 再从摄氏度转出
    if t == "℉":
        out = c * 9 / 5 + 32
    elif t == "K":
        out = c + 273.15
    else:  # ℃
        out = c

    result_var.set(f"{val:.2f} {f} = {out:.2f} {t}")


def swap():
    a, b = unit_from.get(), unit_to.get()
    unit_from.set(b)
    unit_to.set(a)
    convert()


# ========== 界面 ==========
ttk.Label(root, text="🌡️ 温度单位转换器", font=("Microsoft YaHei", 16, "bold")).pack(pady=10)

frame1 = ttk.Frame(root)
frame1.pack(pady=5)

ttk.Label(frame1, text="输入温度：").pack(side="left")
ttk.Entry(frame1, textvariable=input_var, width=12, font=("Microsoft YaHei", 11)).pack(side="left", padx=5)

frame2 = ttk.Frame(root)
frame2.pack(pady=5)

ttk.Label(frame2, text="从：").pack(side="left")
ttk.Combobox(frame2, textvariable=unit_from, values=["℃", "℉", "K"],
             state="readonly", width=6).pack(side="left", padx=5)

ttk.Label(frame2, text="到：").pack(side="left", padx=(10, 0))
ttk.Combobox(frame2, textvariable=unit_to, values=["℃", "℉", "K"],
             state="readonly", width=6).pack(side="left", padx=5)

# 按钮区
btn_frame = ttk.Frame(root)
btn_frame.pack(pady=15)

ttk.Button(btn_frame, text="换算", command=convert).pack(side="left", padx=8)
ttk.Button(btn_frame, text="交换", command=swap).pack(side="left", padx=8)
ttk.Button(btn_frame, text="清空", command=lambda: (input_var.set(""), result_var.set("—"))).pack(side="left", padx=8)

ttk.Label(root, textvariable=result_var, font=("Microsoft YaHei", 13, "bold"), foreground="#d32f2f").pack(pady=15)

# 小提示
ttk.Label(root, text="支持 ℃ / ℉ / K 互相转换", font=("Microsoft YaHei", 9), foreground="#666").pack()

# 回车触发换算
root.bind("<Return>", lambda e: convert())

convert()
root.mainloop()