import tkinter as tk
from tkinter import ttk, messagebox

# 汇率（参考实时行情，可自行更新）
exchange_rate = {
    "CNY": {"CNY": 1, "USD": 0.138, "EUR": 0.127, "GBP": 0.109, "JPY": 20.5},
    "USD": {"CNY": 7.25, "USD": 1, "EUR": 0.92, "GBP": 0.79, "JPY": 148.3},
    "EUR": {"CNY": 7.88, "USD": 1.09, "EUR": 1, "GBP": 0.86, "JPY": 161.2},
    "GBP": {"CNY": 9.18, "USD": 1.27, "EUR": 1.16, "GBP": 1, "JPY": 187.4},
    "JPY": {"CNY": 0.0487, "USD": 0.00674, "EUR": 0.0062, "GBP": 0.00534, "JPY": 1}
}

currency_name = {
    "CNY": "人民币(CNY)",
    "USD": "美元(USD)",
    "EUR": "欧元(EUR)",
    "GBP": "英镑(GBP)",
    "JPY": "日元(JPY)"
}
currency_list = list(currency_name.keys())


def convert():
    """执行货币转换"""
    try:
        money = float(entry_amount.get())
        from_cur = combo_from.get().split("(")[1][:-1]
        to_cur = combo_to.get().split("(")[1][:-1]
        result = money * exchange_rate[from_cur][to_cur]
        label_result.config(text=f"转换结果：{result:.2f} {currency_name[to_cur]}")
    except ValueError:
        messagebox.showerror("输入错误", "请输入有效的数字金额！")


def swap_currency():
    """交换两个货币选项"""
    temp = combo_from.get()
    combo_from.set(combo_to.get())
    combo_to.set(temp)


# 创建主窗口
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=12)

# 金额输入区域
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, font=("微软雅黑", 11), width=16)
entry_amount.grid(row=0, column=1, padx=5)

# 货币选择区域
frame2 = tk.Frame(root)
frame2.pack(pady=8)

tk.Label(frame2, text="从：", font=("微软雅黑", 11)).grid(row=0, column=0)
combo_from = ttk.Combobox(frame2, values=list(currency_name.values()), width=14, font=("微软雅黑", 10))
combo_from.grid(row=0, column=1, padx=6)
combo_from.current(0)

btn_swap = tk.Button(frame2, text="⇋", command=swap_currency, width=3)
btn_swap.grid(row=0, column=2, padx=4)

tk.Label(frame2, text="到：", font=("微软雅黑", 11)).grid(row=0, column=3)
combo_to = ttk.Combobox(frame2, values=list(currency_name.values()), width=14, font=("微软雅黑", 10))
combo_to.grid(row=0, column=4, padx=6)
combo_to.current(1)

# 转换按钮
btn_convert = tk.Button(root, text="开始转换", command=convert,
                        font=("微软雅黑", 11), bg="#3498db", fg="white", padx=15)
btn_convert.pack(pady=8)

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

root.mainloop()