import tkinter as tk
from tkinter import ttk, messagebox
import random

# ===================== 初始单词库（可直接改）=====================
word_list = [
    {"english": "apple", "chinese": "苹果"},
    {"english": "banana", "chinese": "香蕉"},
    {"english": "book", "chinese": "书"},
    {"english": "computer", "chinese": "电脑"},
    {"english": "happy", "chinese": "开心的"},
    {"english": "study", "chinese": "学习"},
    {"english": "family", "chinese": "家庭"},
    {"english": "friend", "chinese": "朋友"},
    {"english": "teacher", "chinese": "老师"},
]

# 生词本
word_book = []

# ===================== 主程序 =====================
class WordApp:
    def __init__(self, root):
        self.root = root
        self.root.title("英语单词背诵小程序-可添加单词")
        self.root.geometry("650x520")
        self.root.resizable(False, False)
        
        self.current_index = 0
        self.is_random = False
        self.is_quiz = False
        
        # 标题
        self.title = ttk.Label(root, text="英语单词背诵", font=("微软雅黑", 22, "bold"))
        self.title.pack(pady=10)

        # 自定义单词输入区域
        add_frame = ttk.Frame(root)
        add_frame.pack(pady=5)

        ttk.Label(add_frame, text="英文：").grid(row=0, column=0)
        self.add_eng = ttk.Entry(add_frame, width=15)
        self.add_eng.grid(row=0, column=1, padx=5)

        ttk.Label(add_frame, text="中文：").grid(row=0, column=2)
        self.add_chn = ttk.Entry(add_frame, width=15)
        self.add_chn.grid(row=0, column=3, padx=5)

        ttk.Button(add_frame, text="添加单词", command=self.add_custom_word).grid(row=0, column=4, padx=5)
        
        # 英文单词显示
        self.eng_label = ttk.Label(root, text="", font=("Arial", 30, "bold"))
        self.eng_label.pack(pady=15)
        
        # 中文释义
        self.chn_label = ttk.Label(root, text="", font=("微软雅黑", 18), foreground="green")
        self.chn_label.pack(pady=5)

        # 答题输入框
        self.quiz_entry = ttk.Entry(root, font=("微软雅黑", 16), width=18)
        self.quiz_entry.pack(pady=8)
        self.quiz_entry.pack_forget()

        # 按钮组1
        self.f1 = ttk.Frame(root)
        self.f1.pack(pady=10)
        ttk.Button(self.f1, text="上一个", command=self.prev).grid(row=0, column=0, padx=6)
        ttk.Button(self.f1, text="下一个", command=self.next).grid(row=0, column=1, padx=6)
        ttk.Button(self.f1, text="显示释义", command=self.show_mean).grid(row=0, column=2, padx=6)

        # 按钮组2
        self.f2 = ttk.Frame(root)
        self.f2.pack(pady=5)
        ttk.Button(self.f2, text="随机背诵", command=self.random_mode).grid(row=0, column=0, padx=6)
        self.quiz_btn = ttk.Button(self.f2, text="答题模式", command=self.quiz_mode)
        self.quiz_btn.grid(row=0, column=1, padx=6)
        ttk.Button(self.f2, text="加入生词本", command=self.add_to_wordbook).grid(row=0, column=2, padx=6)
        ttk.Button(self.f2, text="查看生词本", command=self.show_wordbook).grid(row=0, column=3, padx=6)

        self.show_word()

    # 添加自己的单词
    def add_custom_word(self):
        eng = self.add_eng.get().strip()
        chn = self.add_chn.get().strip()
        if not eng or not chn:
            messagebox.showwarning("提示", "英文和中文都不能为空！")
            return
        # 判断是否重复
        for w in word_list:
            if w["english"] == eng:
                messagebox.showwarning("提示", "该单词已存在！")
                return
        word_list.append({"english": eng, "chinese": chn})
        messagebox.showinfo("成功", f"添加成功：{eng} - {chn}")
        # 清空输入框
        self.add_eng.delete(0, tk.END)
        self.add_chn.delete(0, tk.END)

    # 显示当前单词
    def show_word(self):
        word = word_list[self.current_index]
        self.eng_label.config(text=word["english"])
        self.chn_label.config(text="")

    # 显示释义
    def show_mean(self):
        word = word_list[self.current_index]
        self.chn_label.config(text=word["chinese"])

    # 上一个
    def prev(self):
        if self.current_index > 0:
            self.current_index -= 1
            self.show_word()
        else:
            messagebox.showinfo("提示", "已是第一个单词")

    # 下一个
    def next(self):
        if self.current_index < len(word_list)-1:
            self.current_index += 1
            self.show_word()
        else:
            messagebox.showinfo("提示", "已是最后一个单词")

    # 随机背诵
    def random_mode(self):
        self.current_index = random.randint(0, len(word_list)-1)
        self.show_word()
        messagebox.showinfo("随机模式", "已开启随机背单词")

    # 答题模式
    def quiz_mode(self):
        self.quiz_entry.pack(pady=8)
        self.chn_label.config(text="请输入中文意思")
        self.current_index = random.randint(0, len(word_list)-1)
        self.eng_label.config(text=word_list[self.current_index]["english"])
        self.quiz_btn.config(text="提交答案", command=self.check_answer)

    # 核对答案
    def check_answer(self):
        ans = self.quiz_entry.get().strip()
        correct = word_list[self.current_index]["chinese"]
        if ans == correct:
            messagebox.showinfo("结果", "✅ 回答正确！")
        else:
            messagebox.showerror("结果", f"❌ 正确答案：{correct}")
        self.quiz_mode()

    # 加入生词本
    def add_to_wordbook(self):
        word = word_list[self.current_index]
        if word not in word_book:
            word_book.append(word)
            messagebox.showinfo("提示", "已加入生词本")
        else:
            messagebox.showinfo("提示", "该单词已在生词本")

    # 查看生词本
    def show_wordbook(self):
        if not word_book:
            messagebox.showinfo("生词本", "生词本暂无单词")
            return
        text = ""
        for w in word_book:
            text += f"{w['english']} — {w['chinese']}\n"
        messagebox.showinfo("我的生词本", text)

# 运行程序
if __name__ == "__main__":
    root = tk.Tk()
    app = WordApp(root)
    root.mainloop()