# 数学公式查询工具 - 完美兼容版
import tkinter as tk
from tkinter import ttk, messagebox

# 主窗口
root = tk.Tk()
root.title("数学公式查询工具")
root.geometry("750x600")
root.resizable(False, False)

# 公式数据库
formula_data = {
    "平方差公式": "a² - b² = (a+b)(a-b)",
    "完全平方公式": "(a±b)² = a² ± 2ab + b²",
    "一元二次方程求根": "x = [-b ± √(b²-4ac)] / 2a",
    "圆周长": "C = 2πr",
    "圆面积": "S = πr²",
    "三角形面积": "S = a×h / 2",
    "梯形面积": "S = (a+b)×h / 2",
    "球体积": "V = (4/3)πr³",
    "勾股定理": "a² + b² = c²",
    "正弦定理": "a/sinA = b/sinB = c/sinC = 2R",
    "余弦定理": "c² = a² + b² - 2ab·cosC",
    "幂函数导数": "(xⁿ)' = n·xⁿ⁻¹",
    "期望": "E(X) = ΣxᵢP(X=xᵢ)",
    "方差": "D(X) = E(X²) - [E(X)]²"
}

# 搜索功能


def search(event=None):
    key = entry.get().strip()
    listbox.delete(0, tk.END)

    for name, formula in formula_data.items():
        if key in name:
            listbox.insert(tk.END, f"{name} ： {formula}")

# 复制公式


def copy():
    try:
        selected = listbox.get(listbox.curselection())
        formula = selected.split("：")[1].strip()
        root.clipboard_clear()
        root.clipboard_append(formula)
        messagebox.showinfo("成功", "公式已复制！")
    except:
        messagebox.showwarning("提示", "请先选择一条公式")


# 界面布局
# 标题
tk.Label(root, text="数学公式查询工具", font=("黑体", 24, "bold")).pack(pady=25)

# 搜索框
frame_search = tk.Frame(root)
frame_search.pack(pady=5)
tk.Label(frame_search, text="搜索：", font=("黑体", 14)).pack(side=tk.LEFT, padx=5)
entry = ttk.Entry(frame_search, font=("黑体", 14), width=35)
entry.pack(side=tk.LEFT)
entry.bind("<KeyRelease>", search)

# 结果展示
listbox = tk.Listbox(root, font=("黑体", 13), width=65,
                     height=18, relief=tk.SOLID)
listbox.pack(pady=15)

# 按钮
frame_btn = tk.Frame(root)
frame_btn.pack(pady=10)
ttk.Button(frame_btn, text="复制公式", command=copy).pack(side=tk.LEFT, padx=20)
ttk.Button(frame_btn, text="退出程序", command=root.quit).pack(side=tk.LEFT)

# 初始化显示
search()

# 启动窗口
root.mainloop()
