import tkinter as tk
from tkinter import ttk, scrolledtext

# 数学公式数据库
formula_data = {
    "一元二次方程": {
        "公式": "x = [-b ± √(b² - 4ac)] / 2a",
        "说明": "ax²+bx+c=0 (a≠0)，判别式Δ=b²-4ac"
    },
    "勾股定理": {
        "公式": "a² + b² = c²",
        "说明": "直角三角形两条直角边平方和等于斜边平方"
    },
    "三角形面积": {
        "公式": "S = 1/2 × a × h",
        "说明": "a为底边长，h为底边对应的高"
    },
    "圆面积": {
        "公式": "S = πr²",
        "说明": "r代表圆的半径"
    },
    "圆周长": {
        "公式": "C = 2πr",
        "说明": "r代表圆的半径"
    },
    "等差数列通项": {
        "公式": "aₙ = a₁ + (n-1)d",
        "说明": "a₁首项，d公差，n项数"
    },
    "等差数列求和": {
        "公式": "Sₙ = n(a₁+aₙ)/2",
        "说明": "等差数列前n项和"
    },
    "等比数列通项": {
        "公式": "aₙ = a₁·qⁿ⁻¹",
        "说明": "a₁首项，q公比"
    },
    "sin平方公式": {
        "公式": "sin²α + cos²α = 1",
        "说明": "三角函数平方恒等式"
    },
    "完全平方和": {
        "公式": "(a+b)² = a² + 2ab + b²",
        "说明": "代数恒等式"
    },
    "完全平方差": {
        "公式": "(a-b)² = a² - 2ab + b²",
        "说明": "代数恒等式"
    },
    "平方差": {
        "公式": "a² - b² = (a+b)(a-b)",
        "说明": "因式分解常用公式"
    },
    "球体积": {
        "公式": "V = 4/3 πr³",
        "说明": "r为球体半径"
    },
    "圆柱体积": {
        "公式": "V = πr²h",
        "说明": "r底面半径，h圆柱高"
    }
}


def search():
    """搜索按钮触发函数"""
    keyword = entry_search.get().strip().lower()
    text_result.delete(1.0, tk.END)

    if not keyword:
        text_result.insert(tk.END, "请输入搜索关键词！\n示例：勾股、圆、方程、平方")
        return

    result_list = []
    for name, info in formula_data.items():
        if keyword in name.lower():
            result_list.append((name, info))

    if not result_list:
        text_result.insert(tk.END, "未找到相关公式，请更换关键词！")
        return

    text_result.insert(tk.END, f"找到 {len(result_list)} 条结果：\n\n")
    for idx, (title, data) in enumerate(result_list, 1):
        text_result.insert(tk.END, f"【{idx}】{title}\n")
        text_result.insert(tk.END, f"公式：{data['公式']}\n")
        text_result.insert(tk.END, f"说明：{data['说明']}\n")
        text_result.insert(tk.END, "-" * 50 + "\n")


# 创建主窗口
root = tk.Tk()
root.title("数学公式查询工具")
root.geometry("620x420")
root.resizable(False, False)

# 顶部框架
frame_top = ttk.Frame(root, padding="10")
frame_top.pack(fill=tk.X)

ttk.Label(frame_top, text="搜索公式：").pack(side=tk.LEFT)
entry_search = ttk.Entry(frame_top, width=35, font=("微软雅黑", 11))
entry_search.pack(side=tk.LEFT, padx=8)
btn_search = ttk.Button(frame_top, text="查询", command=search)
btn_search.pack(side=tk.LEFT)

# 修复点：删除 padding=8
text_result = scrolledtext.ScrolledText(root, font=("微软雅黑", 10))
text_result.pack(padx=10, pady=5, fill=tk.BOTH, expand=True)

# 回车也能搜索
def enter_search(event):
    search()
entry_search.bind("<Return>", enter_search)

root.mainloop()