import tkinter as tk
from tkinter import messagebox
import math

def reduce_fraction():
    try:
        numerator = int(entry_num.get())
        denominator = int(entry_den.get())

        if denominator == 0:
            messagebox.showerror("错误", "分母不能为0！")
            return

        gcd_val = math.gcd(abs(numerator), abs(denominator))
        simple_num = numerator // gcd_val
        simple_den = denominator // gcd_val

        # 负号统一放在分子
        if simple_den < 0:
            simple_num = -simple_num
            simple_den = -simple_den

        res_text.set(f"最大公约数：{gcd_val}\n最简分数：{simple_num}/{simple_den}")
    except ValueError:
        messagebox.showerror("输入错误", "请输入整数！")

# 创建窗口
root = tk.Tk()
root.title("分数化简器")
root.geometry("380x220")
root.resizable(False, False)

# 变量
res_text = tk.StringVar()

# 布局
tk.Label(root, text="分子：", font=("微软雅黑",12)).place(x=40, y=30)
entry_num = tk.Entry(root, width=12, font=("微软雅黑",12))
entry_num.place(x=100, y=30)

tk.Label(root, text="分母：", font=("微软雅黑",12)).place(x=40, y=70)
entry_den = tk.Entry(root, width=12, font=("微软雅黑",12))
entry_den.place(x=100, y=70)

btn = tk.Button(root, text="化简分数", command=reduce_fraction,
                font=("微软雅黑",11), bg="#4285f4", fg="white")
btn.place(x=220, y=45, width=90, height=35)

tk.Label(root, textvariable=res_text, font=("微软雅黑",12), fg="#222222").place(x=40, y=120)

root.mainloop()