import tkinter as tk
from tkinter import messagebox
import random

# 单词库 你可以自由增删单词 {英文:中文释义}
word_dict = {
    "apple": "苹果",
    "banana": "香蕉",
    "cat": "猫",
    "dog": "狗",
    "elephant": "大象",
    "fish": "鱼",
    "grape": "葡萄",
    "house": "房子",
    "island": "岛屿",
    "jungle": "丛林"
}

class WordReciteApp:
    def __init__(self, root):
        self.root = root
        self.root.title("英语单词背诵小程序")
        self.root.geometry("500x400")
        self.root.resizable(False, False)
        self.root.configure(bg="#f0f8ff")

        # 数据变量
        self.word_list = list(word_dict.items())
        self.current_index = 0
        self.right_count = 0
        self.total_count = 0
        self.show_answer = False

        # 标题
        title_label = tk.Label(root, text="📖 英语单词背诵", font=("微软雅黑", 20, "bold"), bg="#f0f8ff", fg="#2c3e50")
        title_label.pack(pady=20)

        # 显示单词标签
        self.word_label = tk.Label(root, text="", font=("微软雅黑", 28), bg="white", width=20, height=2, relief="groove")
        self.word_label.pack(pady=10)

        # 状态提示
        self.info_label = tk.Label(root, text="", font=("微软雅黑",14), bg="#f0f8ff")
        self.info_label.pack(pady=5)

        # 输入框
        tk.Label(root, text="请输入中文释义：", font=("微软雅黑",12), bg="#f0f8ff").pack()
        self.answer_entry = tk.Entry(root, font=("微软雅黑",14), width=25)
        self.answer_entry.pack(pady=5)

        # 按钮容器
        btn_frame = tk.Frame(root, bg="#f0f8ff")
        btn_frame.pack(pady=15)

        tk.Button(btn_frame, text="提交答案", command=self.check_answer, font=("微软雅黑",11), bg="#4CAF50", fg="white", width=10).grid(row=0, column=0, padx=5)
        tk.Button(btn_frame, text="显示答案", command=self.show_ans, font=("微软雅黑",11), bg="#2196F3", fg="white", width=10).grid(row=0, column=1, padx=5)
        tk.Button(btn_frame, text="下一个单词", command=self.next_word, font=("微软雅黑",11), bg="#ff9800", fg="white", width=10).grid(row=0, column=2, padx=5)

        tk.Button(root, text="🔄 重置背诵", command=self.reset, font=("微软雅黑",12), bg="#e74c3c", fg="white").pack(pady=5)

        # 计分标签
        self.score_label = tk.Label(root, text=f"答对: {self.right_count} / 总做题: {self.total_count}", font=("微软雅黑",13), bg="#f0f8ff")
        self.score_label.pack(pady=10)

        # 加载第一个单词
        self.load_word()

    def load_word(self):
        """加载当前单词"""
        if self.current_index >= len(self.word_list):
            messagebox.showinfo("完成", "🎉所有单词背完啦！")
            return
        eng, chn = self.word_list[self.current_index]
        self.current_eng = eng
        self.current_chn = chn
        self.word_label.config(text=eng)
        self.info_label.config(text="")
        self.answer_entry.delete(0, tk.END)
        self.show_answer = False

    def check_answer(self):
        """校验答案对错"""
        user_input = self.answer_entry.get().strip()
        if not user_input:
            messagebox.showwarning("提示","请输入答案！")
            return
        self.total_count += 1
        if user_input == self.current_chn:
            self.right_count += 1
            self.info_label.config(text="✅回答正确！", fg="green")
        else:
            self.info_label.config(text=f"❌错误，正确答案：{self.current_chn}", fg="red")
        self.update_score()

    def show_ans(self):
        """直接显示答案"""
        self.info_label.config(text=f"答案：{self.current_chn}", fg="#9b59b6")

    def next_word(self):
        self.current_index += 1
        self.load_word()

    def reset(self):
        """重置所有进度"""
        random.shuffle(self.word_list)
        self.current_index = 0
        self.right_count = 0
        self.total_count = 0
        self.update_score()
        self.load_word()

    def update_score(self):
        self.score_label.config(text=f"答对: {self.right_count} / 总做题: {self.total_count}")


if __name__ == "__main__":
    window = tk.Tk()
    app = WordReciteApp(window)
    window.mainloop()
