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

class WordReciteApp:
    def __init__(self, root):
        self.root = root
        self.root.title("英语单词背诵小程序")
        self.root.geometry("520x360")
        self.root.resizable(False, False)

        # 单词库 格式：{"英文":"中文释义"}，你可以自由扩充
        self.word_dict = {
            "apple": "苹果",
            "banana": "香蕉",
            "computer": "电脑",
            "student": "学生",
            "teacher": "老师",
            "beautiful": "美丽的",
            "happiness": "幸福",
            "dream": "梦想",
            "freedom": "自由",
            "nature": "大自然",
            "journey": "旅行；旅程",
            "courage": "勇气",
            "wisdom": "智慧",
            "silence": "沉默",
            "eternal": "永恒的"
        }
        self.word_list = list(self.word_dict.keys())
        self.current_index = 0
        self.show_meaning = False  # 是否显示释义

        # 界面组件搭建
        self.create_widgets()
        self.update_display()

    def create_widgets(self):
        # 单词展示区域
        frame_top = ttk.Frame(self.root, padding=20)
        frame_top.pack(fill=tk.BOTH, expand=True)

        self.label_word = ttk.Label(
            frame_top, text="", font=("Microsoft YaHei", 24, "bold")
        )
        self.label_word.pack(pady=12)

        self.label_mean = ttk.Label(
            frame_top, text="", font=("Microsoft YaHei", 16), foreground="#2266bb"
        )
        self.label_mean.pack(pady=8)

        # 按钮区域
        frame_btn = ttk.Frame(self.root, padding=10)
        frame_btn.pack()

        ttk.Button(frame_btn, text="上一个", command=self.prev_word).grid(row=0, column=0, padx=6)
        ttk.Button(frame_btn, text="下一个", command=self.next_word).grid(row=0, column=1, padx=6)
        ttk.Button(frame_btn, text="显示/隐藏释义", command=self.toggle_meaning).grid(row=0, column=2, padx=6)
        ttk.Button(frame_btn, text="随机切换单词", command=self.random_word).grid(row=0, column=3, padx=6)

        frame_status = ttk.Frame(self.root, padding=12)
        frame_status.pack()
        ttk.Button(frame_status, text="已掌握", command=lambda: self.mark("ok")).grid(row=0, column=0, padx=8)
        ttk.Button(frame_status, text="待复习", command=lambda: self.mark("review")).grid(row=0, column=1, padx=8)

        self.label_tip = ttk.Label(self.root, text=f"单词总数：{len(self.word_list)}", foreground="#555555")
        self.label_tip.pack(pady=5)

    def update_display(self):
        word = self.word_list[self.current_index]
        self.label_word.config(text=word)
        if self.show_meaning:
            self.label_mean.config(text=self.word_dict[word])
        else:
            self.label_mean.config(text="???")

    def toggle_meaning(self):
        self.show_meaning = not self.show_meaning
        self.update_display()

    def next_word(self):
        self.current_index += 1
        if self.current_index >= len(self.word_list):
            self.current_index = 0
        self.update_display()

    def prev_word(self):
        self.current_index -= 1
        if self.current_index < 0:
            self.current_index = len(self.word_list) - 1
        self.update_display()

    def random_word(self):
        self.current_index = random.randint(0, len(self.word_list)-1)
        self.update_display()

    def mark(self, status):
        word = self.word_list[self.current_index]
        if status == "ok":
            messagebox.showinfo("标记完成", f"【{word}】标记为已掌握！")
        else:
            messagebox.showwarning("标记完成", f"【{word}】标记为需要复习！")

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