import tkinter as tk

def convert_weight():
    """处理重量转换的逻辑"""
    try:
        # 获取输入框中的重量值并转换为浮点数
        weight = float(weight_entry.get())
        # 获取用户选择的原始单位和目标单位
        original_unit = original_unit_var.get()
        target_unit = target_unit_var.get()
        
        result = 0
        # 根据不同的单位组合进行换算
        if original_unit == "kg" and target_unit == "g":
            result = weight * 1000
        elif original_unit == "kg" and target_unit == "lb":
            result = weight * 2.20462
        elif original_unit == "g" and target_unit == "kg":
            result = weight / 1000
        elif original_unit == "g" and target_unit == "lb":
            result = weight * 0.00220462
        elif original_unit == "lb" and target_unit == "kg":
            result = weight / 2.20462
        elif original_unit == "lb" and target_unit == "g":
            result = weight * 453.592
        else:
            # 如果原始单位和目标单位相同，则结果不变
            result = weight
            
        # 在结果文本框中显示转换后的结果，保留两位小数
        result_text.config(state="normal")  # 允许修改文本框
        result_text.delete("1.0", tk.END)   # 清空之前的结果
        result_text.insert(tk.END, f"{result:.2f} {target_unit}")
        result_text.config(state="disabled") # 设置为只读状态
        
    except ValueError:
        # 如果输入不是有效的数字，显示错误信息
        result_text.config(state="normal")
        result_text.delete("1.0", tk.END)
        result_text.insert(tk.END, "错误：请输入有效的数字！")
        result_text.config(state="disabled")

# 1. 创建主窗口
root = tk.Tk()
root.title("重量单位转换器")
root.geometry("300x250")

# 2. 创建并布局界面组件
# 输入框
tk.Label(root, text="请输入重量值:").pack(pady=(10, 0))
weight_entry = tk.Entry(root)
weight_entry.pack(pady=5)

# 原始单位下拉菜单
original_units = ["kg", "g", "lb"]
original_unit_var = tk.StringVar(root)
original_unit_var.set(original_units[0])  # 默认选择第一个单位
tk.OptionMenu(root, original_unit_var, *original_units).pack(pady=5)

# 目标单位下拉菜单
target_units = ["kg", "g", "lb"]
target_unit_var = tk.StringVar(root)
target_unit_var.set(target_units[1])      # 默认选择第二个单位
tk.OptionMenu(root, target_unit_var, *target_units).pack(pady=5)

# 转换按钮
convert_button = tk.Button(root, text="转换", command=convert_weight)
convert_button.pack(pady=10)

# 结果显示文本框
result_text = tk.Text(root, height=1, width=20, state="disabled")
result_text.pack(pady=5)

# 3. 进入主事件循环，保持窗口显示
root.mainloop()