import tkinter as tk
from tkinter import ttk, messagebox

# 汇率基准：1单位外币兑换人民币（2026参考汇率）
exchange_rate = {
    "CNY(人民币)": 1,
    "USD(美元)": 7.22,
    "EUR(欧元)": 7.85,
    "GBP(英镑)": 9.13,
    "JPY(日元)": 0.047
}

def convert_currency():
    """执行货币换算逻辑"""
    try:
        money = float(entry_amount.get())
        from_cur = combo_from.get()
        to_cur = combo_to.get()

        # 先转成人民币，再转为目标货币
        rmb = money * exchange_rate[from_cur]
        result = rmb / exchange_rate[to_cur]

        label_result.config(text=f"转换结果：{result:.2f} {to_cur.split('(')[0]}")
    except ValueError:
        messagebox.showerror("输入错误", "请输入合法数字金额！")
    except Exception:
        messagebox.showerror("错误", "请正确选择转换币种")

# 创建主窗口
root = tk.Tk()
root.title("货币单位转换器")
root.geometry("420x260")
root.resizable(False, False)

# 标题
title_label = tk.Label(root, text="简易货币转换器", font=("微软雅黑", 16, "bold"))
title_label.pack(pady=15)

# 金额输入行
frame1 = tk.Frame(root)
frame1.pack(pady=5)
tk.Label(frame1, text="输入金额：", font=("微软雅黑", 11)).grid(row=0, column=0, padx=5)
entry_amount = tk.Entry(frame1, width=18, font=("微软雅黑", 11))
entry_amount.grid(row=0, column=1, padx=5)

# 源币种选择
frame2 = tk.Frame(root)
frame2.pack(pady=5)
tk.Label(frame2, text="从：", font=("微软雅黑", 11)).grid(row=0, column=0, padx=5)
currency_list = list(exchange_rate.keys())
combo_from = ttk.Combobox(frame2, values=currency_list, width=15, font=("微软雅黑", 10))
combo_from.current(0)
combo_from.grid(row=0, column=1, padx=5)

# 目标币种选择
frame3 = tk.Frame(root)
frame3.pack(pady=5)
tk.Label(frame3, text="转换至：", font=("微软雅黑", 11)).grid(row=0, column=0, padx=5)
combo_to = ttk.Combobox(frame3, values=currency_list, width=15, font=("微软雅黑", 10))
combo_to.current(1)
combo_to.grid(row=0, column=1, padx=5)

# 转换按钮
btn_convert = tk.Button(root, text="开始转换", command=convert_currency,
                        font=("微软雅黑", 11), bg="#409EFF", fg="white", padx=10)
btn_convert.pack(pady=12)

# 结果显示
label_result = tk.Label(root, text="转换结果：", font=("微软雅黑", 12, "bold"), fg="#2E86AB")
label_result.pack()

root.mainloop()