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

# 模拟唐诗数据（实际应用中可以从JSON文件读取）
poems_data = [
    {"title": "静夜思", "author": "李白", "content": "床前明月光，\n疑是地上霜。\n举头望明月，\n低头思故乡。"},
    {"title": "春晓", "author": "孟浩然", "content": "春眠不觉晓，\n处处闻啼鸟。\n夜来风雨声，\n花落知多少。"},
    {"title": "登鹳雀楼", "author": "王之涣", "content": "白日依山尽，\n黄河入海流。\n欲穷千里目，\n更上一层楼。"},
    {"title": "望庐山瀑布", "author": "李白", "content": "日照香炉生紫烟，\n遥看瀑布挂前川。\n飞流直下三千尺，\n疑是银河落九天。"},
    {"title": "江雪", "author": "柳宗元", "content": "千山鸟飞绝，\n万径人踪灭。\n孤舟蓑笠翁，\n独钓寒江雪。"},
    {"title": "相思", "author": "王维", "content": "红豆生南国，\n春来发几枝。\n愿君多采撷，\n此物最相思。"},
]

class TangPoetryApp:
    def __init__(self, root):
        self.root = root
        self.root.title("唐诗三百首 - 桌面版")
        self.root.geometry("600x500")
        self.root.configure(bg="#f5f5dc") # 米黄色古风背景

        # 界面组件
        self.create_widgets()
        # 初始化显示一首诗
        self.display_poem(random.choice(poems_data))

    def create_widgets(self):
        # 顶部搜索栏
        search_frame = tk.Frame(self.root, bg="#f5f5dc")
        search_frame.pack(pady=20)

        tk.Label(search_frame, text="搜索诗词/诗人:", bg="#f5f5dc").pack(side=tk.LEFT)
        self.search_var = tk.StringVar()
        self.search_entry = tk.Entry(search_frame, textvariable=self.search_var, width=20)
        self.search_entry.pack(side=tk.LEFT, padx=10)
        
        search_btn = tk.Button(search_frame, text="搜索", command=self.search_poem, bg="#8b4513", fg="white")
        search_btn.pack(side=tk.LEFT)

        # 内容显示区域
        self.display_frame = tk.Frame(self.root, bg="white", bd=2, relief=tk.RIDGE)
        self.display_frame.pack(pady=10, padx=40, fill=tk.BOTH, expand=True)

        self.title_label = tk.Label(self.display_frame, text="", font=("华文新魏", 20, "bold"), bg="white")
        self.title_label.pack(pady=10)

        self.author_label = tk.Label(self.display_frame, text="", font=("楷体", 12), bg="white", fg="#666")
        self.author_label.pack(pady=5)

        self.content_label = tk.Label(self.display_frame, text="", font=("隶书", 16), bg="white", justify=tk.CENTER)
        self.content_label.pack(pady=20, fill=tk.BOTH)

        # 底部按钮栏
        btn_frame = tk.Frame(self.root, bg="#f5f5dc")
        btn_frame.pack(pady=20)

        random_btn = tk.Button(btn_frame, text="随机欣赏", command=self.random_poem, width=15, height=2)
        random_btn.pack(side=tk.LEFT, padx=20)

        exit_btn = tk.Button(btn_frame, text="退出", command=self.root.quit, width=10)
        exit_btn.pack(side=tk.LEFT)

    def display_poem(self, poem):
        """在界面上更新诗词内容"""
        self.title_label.config(text=poem["title"])
        self.author_label.config(text=f"〔唐〕{poem['author']}")
        self.content_label.config(text=poem["content"])

    def random_poem(self):
        """随机选择一首诗"""
        self.display_poem(random.choice(poems_data))

    def search_poem(self):
        """根据关键词搜索"""
        keyword = self.search_var.get().strip()
        if not keyword:
            messagebox.showwarning("提示", "请输入搜索关键词")
            return

        results = [p for p in poems_data if keyword in p["title"] or keyword in p["author"]]
        
        if results:
            self.display_poem(results[0])
        else:
            messagebox.showinfo("搜索结果", "未找到相关诗词")

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