import tkinter as tk
from tkinter import ttk

def weight_convert(*args):
    try:
        num = float(entry_input.get())
        unit_in = combo_in.get()
        
        # 统一换算成克为基准
        g = 0
        if unit_in == "吨(t)":
            g = num * 1000000
        elif unit_in == "千克(kg)":
            g = num * 1000
        elif unit_in == "克(g)":
            g = num
        elif unit_in == "斤":
            g = num * 500
        elif unit_in == "两":
            g = num * 50
        elif unit_in == "毫克(mg)":
            g = num / 1000

        # 赋值显示
        lab_t.config(text=f"{g/1000000:.4f}")
        lab_kg.config(text=f"{g/1000:.4f}")
        lab_g.config(text=f"{g:.4f}")
        lab_jin.config(text=f"{g/500:.4f}")
        lab_liang.config(text=f"{g/50:.4f}")
        lab_mg.config(text=f"{g*1000:.4f}")
    except:
        lab_t.config(text="")
        lab_kg.config(text="")
        lab_g.config(text="")
        lab_jin.config(text="")
        lab_liang.config(text="")
        lab_mg.config(text="")

# 主窗口
root = tk.Tk()
root.title("重量单位转换器")
root.geometry("420x300")
root.resizable(False,False)

# 输入区域
frame1 = ttk.LabelFrame(root,text="输入数据",padding=10)
frame1.pack(fill="x",padx=15,pady=10)

entry_input = ttk.Entry(frame1,font=("微软雅黑",12))
entry_input.grid(row=0,column=0,padx=5)
entry_input.bind("<KeyRelease>",weight_convert)

unit_list = ["吨(t)","千克(kg)","克(g)","斤","两","毫克(mg)"]
combo_in = ttk.Combobox(frame1,values=unit_list,state="readonly",font=("微软雅黑",11))
combo_in.grid(row=0,column=1,padx=5)
combo_in.current(1)
combo_in.bind("<<ComboboxSelected>>",weight_convert)

btn = ttk.Button(frame1,text="一键转换",command=weight_convert)
btn.grid(row=0,column=2,padx=8)

# 结果区域
frame2 = ttk.LabelFrame(root,text="转换结果",padding=10)
frame2.pack(fill="both",expand=True,padx=15,pady=5)

# 排版
r=0
ttk.Label(frame2,text="吨(t)：").grid(row=r,column=0,sticky="w",pady=3)
lab_t=ttk.Label(frame2,text="")
lab_t.grid(row=r,column=1)

r+=1
ttk.Label(frame2,text="千克(kg)：").grid(row=r,column=0,sticky="w",pady=3)
lab_kg=ttk.Label(frame2,text="")
lab_kg.grid(row=r,column=1)

r+=1
ttk.Label(frame2,text="克(g)：").grid(row=r,column=0,sticky="w",pady=3)
lab_g=ttk.Label(frame2,text="")
lab_g.grid(row=r,column=1)

r+=1
ttk.Label(frame2,text="斤：").grid(row=r,column=0,sticky="w",pady=3)
lab_jin=ttk.Label(frame2,text="")
lab_jin.grid(row=r,column=1)

r+=1
ttk.Label(frame2,text="两：").grid(row=r,column=0,sticky="w",pady=3)
lab_liang=ttk.Label(frame2,text="")
lab_liang.grid(row=r,column=1)

r+=1
ttk.Label(frame2,text="毫克(mg)：").grid(row=r,column=0,sticky="w",pady=3)
lab_mg=ttk.Label(frame2,text="")
lab_mg.grid(row=r,column=1)

root.mainloop()