import tkinter as tk
from tkinter import messagebox

# ====== 重量转换逻辑 ======
def convert_weight():
    try:
        value = float(entry_value.get())
        from_unit = from_var.get()
        to_unit = to_var.get()

        # 先统一转换为千克
        to_kg = {
            "吨": 1000,
            "千克": 1,
            "克": 0.001,
            "毫克": 0.000001,
            "磅": 0.45359237,
            "盎司": 0.028349523125
        }

        kg = value * to_kg[from_unit]
        result = kg / to_kg[to_unit]

        label_result.config(
            text=f"{value} {from_unit}\n= {result:.4f} {to_unit}"
        )

    except ValueError:
        messagebox.showerror("输入错误", "请输入正确的数字哦 🥺")

# ====== 创建窗口 ======
root = tk.Tk()
root.title("⚖️ 卡通重量转换器")
root.geometry("420x520")
root.resizable(False, False)
root.configure(bg="#F3E5F5")

# ====== 标题 ======
label_title = tk.Label(
    root,
    text="🎀 重量单位转换器 ⚖️",
    font=("Comic Sans MS", 22, "bold"),
    bg="#F3E5F5",
    fg="#7B1FA2"
)
label_title.pack(pady=15)

# ====== 输入区域 ======
frame_input = tk.Frame(root, bg="#F3E5F5")
frame_input.pack(pady=10)

label_prompt = tk.Label(
    frame_input,
    text="请输入重量数值：",
    font=("Comic Sans MS", 13),
    bg="#F3E5F5"
)
label_prompt.pack(anchor="w")

entry_value = tk.Entry(
    frame_input,
    font=("Comic Sans MS", 16),
    width=20,
    justify="center",
    relief="solid",
    bd=2
)
entry_value.pack(pady=5)

# ====== 单位选择 ======
units = ["吨", "千克", "克", "毫克", "磅", "盎司"]

frame_from = tk.LabelFrame(
    root, text="从（原单位）",
    font=("Comic Sans MS", 12),
    bg="#F3E5F5", fg="#4A148C"
)
frame_from.pack(pady=10)

from_var = tk.StringVar(value="千克")
for u in units:
    tk.Radiobutton(
        frame_from, text=u,
        variable=from_var, value=u,
        font=("Comic Sans MS", 11),
        bg="#F3E5F5"
    ).pack(side="left", padx=5)

frame_to = tk.LabelFrame(
    root, text="转换为（目标单位）",
    font=("Comic Sans MS", 12),
    bg="#F3E5F5", fg="#4A148C"
)
frame_to.pack(pady=10)

to_var = tk.StringVar(value="克")
for u in units:
    tk.Radiobutton(
        frame_to, text=u,
        variable=to_var, value=u,
        font=("Comic Sans MS", 11),
        bg="#F3E5F5"
    ).pack(side="left", padx=5)

# ====== 转换按钮 ======
button_convert = tk.Button(
    root,
    text="✨ 开始转换 ✨",
    font=("Comic Sans MS", 14, "bold"),
    bg="#AB47BC",
    fg="white",
    activebackground="#8E24AA",
    relief="flat",
    padx=20, pady=5,
    command=convert_weight
)
button_convert.pack(pady=15)

# ====== 结果展示 ======
label_result = tk.Label(
    root,
    text="",
    font=("Comic Sans MS", 14),
    bg="#F3E5F5",
    fg="#4A148C",
    justify="center"
)
label_result.pack(pady=10)

# ====== 底部提示 ======
label_footer = tk.Label(
    root,
    text="☁️ 支持吨 / 千克 / 克 / 毫克 / 磅 / 盎司",
    font=("Comic Sans MS", 10),
    bg="#F3E5F5",
    fg="#CE93D8"
)
label_footer.pack(side="bottom", pady=10)

# ====== 运行主循环 ======
root.mainloop()