import tkinter as tk
from tkinter import scrolledtext, messagebox

# 数学公式数据库：字典形式，键为关键词列表，值为公式描述（包括LaTeX表示）
formulas = {
    "勾股定理": {
        "description": "勾股定理（Pythagorean Theorem）：在直角三角形中，两条直角边的平方和等于斜边的平方。",
        "formula": "a² + b² = c²"
    },
    "Pythagorean": {
        "description": "Pythagorean Theorem: In a right-angled triangle, the square of the hypotenuse equals the sum of the squares of the other two sides.",
        "formula": "a² + b² = c²"
    },
    "二次公式": {
        "description": "二次方程求根公式（Quadratic Formula）：ax² + bx + c = 0 的根为。",
        "formula": "x = [-b ± √(b² - 4ac)] / (2a)"
    },
    "quadratic": {
        "description": "Quadratic Formula: For ax² + bx + c = 0, roots are.",
        "formula": "x = [-b ± √(b² - 4ac)] / (2a)"
    },
    "圆周率": {
        "description": "圆的周长与直径之比（Pi）：圆周率约为3.14159。",
        "formula": "C = 2πr 或 π = C / (2r)"
    },
    "pi": {
        "description": "Pi: The ratio of a circle's circumference to its diameter, approximately 3.14159.",
        "formula": "C = 2πr"
    },
    "三角函数": {
        "description": "正弦、余弦、正切（Sine, Cosine, Tangent）：在直角三角形中。",
        "formula": "sin θ = 对边 / 斜边, cos θ = 邻边 / 斜边, tan θ = 对边 / 邻边"
    },
    "sine cosine": {
        "description": "Trigonometric Functions: In a right triangle.",
        "formula": "sin θ = opposite / hypotenuse, cos θ = adjacent / hypotenuse, tan θ = opposite / adjacent"
    },
    "微积分导数": {
        "description": "幂函数导数规则（Power Rule）：(x^n)' = n x^{n-1}。",
        "formula": "d/dx (x^n) = n x^{n-1}"
    },
    "derivative": {
        "description": "Power Rule for Derivatives: The derivative of x^n is n x^{n-1}.",
        "formula": "d/dx (x^n) = n x^{n-1}"
    },
    "积分": {
        "description": "幂函数积分规则（Power Rule for Integration）：∫ x^n dx = (x^{n+1}) / (n+1) + C (n ≠ -1)。",
        "formula": "∫ x^n dx = (x^{n+1}) / (n+1) + C"
    },
    "integral": {
        "description": "Power Rule for Integration: ∫ x^n dx = (x^{n+1}) / (n+1) + C (n ≠ -1).",
        "formula": "∫ x^n dx = (x^{n+1}) / (n+1) + C"
    },
    "欧拉公式": {
        "description": "欧拉公式（Euler's Formula）：复数中的指数形式。",
        "formula": "e^{iθ} = cos θ + i sin θ"
    },
    "euler": {
        "description": "Euler's Formula: Exponential form in complex numbers.",
        "formula": "e^{iθ} = cos θ + i sin θ"
    }
}

class MathFormulaQuery:
    def __init__(self, root):
        self.root = root
        self.root.title("数学公式查询工具")
        self.root.geometry("600x500")
        
        # 搜索标签和输入框
        tk.Label(root, text="输入关键词搜索公式（支持中英文，如 '勾股定理' 或 'Pythagorean'）：", font=("Arial", 12)).pack(pady=10)
        
        self.search_entry = tk.Entry(root, width=50, font=("Arial", 12))
        self.search_entry.pack(pady=5)
        
        # 搜索按钮
        search_button = tk.Button(root, text="搜索", command=self.search_formula, font=("Arial", 12), bg="lightblue")
        search_button.pack(pady=10)
        
        # 示例按钮
        example_button = tk.Button(root, text="显示所有示例", command=self.show_all, font=("Arial", 12), bg="lightgreen")
        example_button.pack(pady=5)
        
        # 结果显示区域（可滚动文本框）
        self.result_text = scrolledtext.ScrolledText(root, width=70, height=20, font=("Arial", 10))
        self.result_text.pack(pady=10, padx=10, fill=tk.BOTH, expand=True)
    
    def search_formula(self):
        query = self.search_entry.get().strip().lower()
        if not query:
            messagebox.showwarning("警告", "请输入关键词！")
            return
        
        self.result_text.delete(1.0, tk.END)  # 清空结果
        found = False
        
        for key, value in formulas.items():
            if query in key.lower() or any(query in k.lower() for k in key.split()):  # 简单字符串匹配
                self.result_text.insert(tk.END, f"关键词: {key}\n")
                self.result_text.insert(tk.END, f"描述: {value['description']}\n")
                self.result_text.insert(tk.END, f"公式: {value['formula']}\n")
                self.result_text.insert(tk.END, "-" * 50 + "\n\n")
                found = True
        
        if not found:
            self.result_text.insert(tk.END, "未找到匹配的公式。请尝试其他关键词，如 '勾股定理'、'二次公式' 等。\n")
    
    def show_all(self):
        self.result_text.delete(1.0, tk.END)
        for key, value in formulas.items():
            self.result_text.insert(tk.END, f"关键词: {key}\n")
            self.result_text.insert(tk.END, f"描述: {value['description']}\n")
            self.result_text.insert(tk.END, f"公式: {value['formula']}\n")
            self.result_text.insert(tk.END, "-" * 50 + "\n\n")

if __name__ == "__main__":
    root = tk.Tk()
    app = MathFormulaQuery(root)
    root.mainloop()