import tkinter as tk
import tkinter.messagebox as messagebox  # 修复导入
import random

# 单词库 可自行增删
word_list = [
    {"word": "apple", "mean": "苹果"},
    {"word": "banana", "mean": "香蕉"},
    {"word": "book", "mean": "书本"},
    {"word": "computer", "mean": "电脑"},
    {"word": "family", "mean": "家庭"},
    {"word": "friend", "mean": "朋友"},
    {"word": "happy", "mean": "开心的"},
    {"word": "morning", "mean": "早上"},
    {"word": "school", "mean": "学校"},
    {"word": "water", "mean": "水"}
]

class WordStudy:
    def __init__(self, root):
        self.root = root
        self.root.title("英语单词背诵小程序")
        self.root.geometry("500x400")
        
        self.score = 0
        self.index = 0
        self.wrong_list = []
        self.show_mean = False
        
        # 打乱单词
        random.shuffle(word_list)
        self.now_word = word_list[self.index]
        
        # 界面
        self.label_word = tk.Label(root, text="", font=("微软雅黑", 28, "bold"))
        self.label_word.pack(pady=40)
        
        self.label_mean = tk.Label(root, text="", font=("微软雅黑", 20), fg="#2266cc")
        self.label_mean.pack(pady=10)
        
        # 按钮
        frame_btn = tk.Frame(root)
        frame_btn.pack(pady=30)
        
        tk.Button(frame_btn, text="显示释义", command=self.show_meaning,
                  width=10, height=2, font=("微软雅黑",11)).grid(row=0,column=0,padx=8)
        tk.Button(frame_btn, text="认识→下一个", command=self.know_word,
                  width=12, height=2, font=("微软雅黑",11),bg="#67c23a").grid(row=0,column=1,padx=8)
        tk.Button(frame_btn, text="不认识→错题", command=self.unknow_word,
                  width=12, height=2, font=("微软雅黑",11),bg="#e6a23c").grid(row=0,column=2,padx=8)

        # 分数
        self.label_score = tk.Label(root, text=f"当前已掌握：{self.score} 个", font=("微软雅黑",12))
        self.label_score.pack()

        self.update_word()

    def update_word(self):
        # 更新单词显示
        self.now_word = word_list[self.index]
        self.label_word.config(text=self.now_word["word"])
        self.label_mean.config(text="")
        self.show_mean = False

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

# ====================== 单词库（可无限添加）======================
word_list = [
    {"word": "apple", "mean": "苹果"},
    {"word": "banana", "mean": "香蕉"},
    {"word": "book", "mean": "书本"},
    {"word": "computer", "mean": "电脑"},
    {"word": "family", "mean": "家庭"},
    {"word": "friend", "mean": "朋友"},
    {"word": "happy", "mean": "开心的"},
    {"word": "morning", "mean": "早上"},
    {"word": "school", "mean": "学校"},
    {"word": "water", "mean": "水"},
    {"word": "teacher", "mean": "老师"},
    {"word": "student", "mean": "学生"},
    {"word": "mother", "mean": "妈妈"},
    {"word": "father", "mean": "爸爸"},
    {"word": "hello", "mean": "你好"},
    {"word": "bye", "mean": "再见"},
    {"word": "blue", "mean": "蓝色"},
    {"word": "red", "mean": "红色"},
    {"word": "one", "mean": "一"},
    {"word": "two", "mean": "二"},
]

# ====================== 加强版主程序 ======================
class WordApp:
    def __init__(self, root):
        self.root = root
        self.root.title("【加强版】英语单词背诵小程序")
        self.root.geometry("600x450")
        self.root.resizable(False, False)

        # 学习数据
        self.all_words = word_list.copy()
        random.shuffle(self.all_words)
        self.wrong_words = []
        self.current_words = self.all_words
        self.index = 0
        self.master_score = 0

        # 界面
        self.setup_ui()
        self.show_word()

    def setup_ui(self):
        # 顶部进度
        self.progress_label = tk.Label(self.root, text="进度：0/0", font=("微软雅黑", 12))
        self.progress_label.pack(pady=5)

        # 单词
        self.word_label = tk.Label(self.root, text="", font=("微软雅黑", 36, "bold"))
        self.word_label.pack(pady=40)

        # 释义
        self.mean_label = tk.Label(self.root, text="", font=("微软雅黑", 22), fg="#0066cc")
        self.mean_label.pack(pady=10)

        # 分数
        self.score_label = tk.Label(self.root, text="已掌握：0 个", font=("微软雅黑", 12))
        self.score_label.pack(pady=5)

        # 按钮区
        frame = tk.Frame(self.root)
        frame.pack(pady=35)

        tk.Button(frame, text="显示释义", command=self.show_mean, width=12, height=2,
                  font=("微软雅黑", 11)).grid(row=0, column=0, padx=8)

        tk.Button(frame, text="认识 ✅", command=self.know, width=12, height=2,
                  font=("微软雅黑", 11), bg="#5cb85c", fg="white").grid(row=0, column=1, padx=8)

        tk.Button(frame, text="不认识 ❌", command=self.unknow, width=12, height=2,
                  font=("微软雅黑", 11), bg="#f0ad4e", fg="white").grid(row=0, column=2, padx=8)

        tk.Button(frame, text="复习错题本", command=self.review_wrong, width=14, height=2,
                  font=("微软雅黑", 11), bg="#337ab7", fg="white").grid(row=1, column=1, pady=12)

    # 显示当前单词
    def show_word(self):
        if self.index >= len(self.current_words):
            self.finish()
            return

        w = self.current_words[self.index]
        self.word_label.config(text=w["word"])
        self.mean_label.config(text="")
        total = len(self.current_words)
        self.progress_label.config(text=f"进度：{self.index+1}/{total}")

    # 显示释义
    def show_mean(self):
        w = self.current_words[self.index]
        self.mean_label.config(text=w["mean"])

    # 认识
    def know(self):
        self.master_score += 1
        self.score_label.config(text=f"已掌握：{self.master_score} 个")
        self.next_word()

    # 不认识
    def unknow(self):
        word = self.current_words[self.index]
        if word not in self.wrong_words:
            self.wrong_words.append(word)
        self.next_word()

    # 下一题
    def next_word(self):
        self.index += 1
        self.show_word()

    # 结束
    def finish(self):
        if self.current_words == self.all_words:
            messagebox.showinfo("完成", f"全部背完！\n掌握：{self.master_score}\n错题：{len(self.wrong_words)}")
        else:
            messagebox.showinfo("复习完成", "错题已全部复习完毕！")
            self.current_words = self.all_words
            self.index = 0
            self.show_word()

    # 复习错题
    def review_wrong(self):
        if not self.wrong_words:
            messagebox.showinfo("提示", "错题本为空！")
            return
        self.current_words = self.wrong_words.copy()
        self.index = 0
        random.shuffle(self.current_words)
        messagebox.showinfo("复习", f"开始复习 {len(self.wrong_words)} 道错题")
        self.show_word()

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