import tkinter as tk
from tkinter import font

# ================= 单词库 =================
words = [
    ("apple", "苹果"),
    ("banana", "香蕉"),
    ("computer", "电脑"),
    ("elephant", "大象"),
    ("beautiful", "美丽的"),
    ("difficult", "困难的"),
    ("important", "重要的"),
    ("knowledge", "知识"),
    ("language", "语言"),
    ("medicine", "药"),
]

# ================= 主窗口 =================
root = tk.Tk()
root.title("英语单词背诵小程序")
root.geometry("420x320")
root.resizable(False, False)
root.configure(bg="#f0f0f0")

# ================= 状态变量 =================
index = tk.IntVar(value=0)
mastered = [False] * len(words)
show_meaning = tk.BooleanVar(value=False)

# ================= 字体 =================
word_font = font.Font(family="Arial", size=32, weight="bold")
meaning_font = font.Font(family="Microsoft YaHei", size=22)
btn_font = font.Font(family="Microsoft YaHei", size=12)

# ================= 函数 =================
def update_display():
    i = index.get()
    word, meaning = words[i]

    word_label.config(text=word)
    meaning_label.config(text=meaning if show_meaning.get() else "???")

    progress_label.config(text=f"{i + 1} / {len(words)}")

    if mastered[i]:
        word_label.config(fg="#999999")
        meaning_label.config(fg="#999999")
        master_btn.config(text="已掌握 ✔")
    else:
        word_label.config(fg="#333333")
        meaning_label.config(fg="#333333")
        master_btn.config(text="标记为已掌握")

    prev_btn.config(state="normal" if i > 0 else "disabled")
    next_btn.config(state="normal" if i < len(words) - 1 else "disabled")

def show_hide():
    show_meaning.set(not show_meaning.get())
    show_btn.config(text="隐藏释义" if show_meaning.get() else "显示释义")
    update_display()

def next_word():
    if index.get() < len(words) - 1:
        index.set(index.get() + 1)
        show_meaning.set(False)
        show_btn.config(text="显示释义")
        update_display()

def prev_word():
    if index.get() > 0:
        index.set(index.get() - 1)
        show_meaning.set(False)
        show_btn.config(text="显示释义")
        update_display()

def toggle_master():
    i = index.get()
    mastered[i] = not mastered[i]
    update_display()

# ================= 布局 =================
# 单词
word_label = tk.Label(root, text="", font=word_font, bg="#f0f0f0", fg="#333333")
word_label.pack(pady=(40, 10))

# 释义
meaning_label = tk.Label(root, text="???", font=meaning_font, bg="#f0f0f0", fg="#666666")
meaning_label.pack(pady=(0, 20))

# 进度
progress_label = tk.Label(root, text="", font=("Arial", 11), bg="#f0f0f0", fg="#999999")
progress_label.pack()

# 按钮区
btn_frame = tk.Frame(root, bg="#f0f0f0")
btn_frame.pack(pady=20)

prev_btn = tk.Button(btn_frame, text="← 上一个", font=btn_font, width=12, command=prev_word)
prev_btn.grid(row=0, column=0, padx=8)

show_btn = tk.Button(btn_frame, text="显示释义", font=btn_font, width=12, command=show_hide)
show_btn.grid(row=0, column=1, padx=8)

next_btn = tk.Button(btn_frame, text="下一个 →", font=btn_font, width=12, command=next_word)
next_btn.grid(row=0, column=2, padx=8)

master_btn = tk.Button(root, text="标记为已掌握", font=btn_font, width=20, command=toggle_master, bg="#e0e0e0")
master_btn.pack(pady=10)

# ================= 启动 =================
update_display()
root.mainloop()