import tkinter as tk
from tkinter import ttk, scrolledtext

# ===================== 30首真实经典唐诗数据 =====================
tang_poems = {
    1: {"title": "静夜思", "author": "李白", "content": ["床前明月光，", "疑是地上霜。", "举头望明月，", "低头思故乡。"]},
    2: {"title": "登鹳雀楼", "author": "王之涣", "content": ["白日依山尽，", "黄河入海流。", "欲穷千里目，", "更上一层楼。"]},
    3: {"title": "春晓", "author": "孟浩然", "content": ["春眠不觉晓，", "处处闻啼鸟。", "夜来风雨声，", "花落知多少。"]},
    4: {"title": "鹿柴", "author": "王维", "content": ["空山不见人，", "但闻人语响。", "返景入深林，", "复照青苔上。"]},
    5: {"title": "相思", "author": "王维", "content": ["红豆生南国，", "春来发几枝。", "愿君多采撷，", "此物最相思。"]},
    6: {"title": "江雪", "author": "柳宗元", "content": ["千山鸟飞绝，", "万径人踪灭。", "孤舟蓑笠翁，", "独钓寒江雪。"]},
    7: {"title": "赋得古原草送别", "author": "白居易", "content": ["离离原上草，", "一岁一枯荣。", "野火烧不尽，", "春风吹又生。", "远芳侵古道，", "晴翠接荒城。", "又送王孙去，", "萋萋满别情。"]},
    8: {"title": "九月九日忆山东兄弟", "author": "王维", "content": ["独在异乡为异客，", "每逢佳节倍思亲。", "遥知兄弟登高处，", "遍插茱萸少一人。"]},
    9: {"title": "送杜少府之任蜀州", "author": "王勃", "content": ["城阙辅三秦，", "风烟望五津。", "与君离别意，", "同是宦游人。", "海内存知己，", "天涯若比邻。", "无为在歧路，", "儿女共沾巾。"]},
    10: {"title": "回乡偶书", "author": "贺知章", "content": ["少小离家老大回，", "乡音无改鬓毛衰。", "儿童相见不相识，", "笑问客从何处来。"]},
    11: {"title": "凉州词", "author": "王翰", "content": ["葡萄美酒夜光杯，", "欲饮琵琶马上催。", "醉卧沙场君莫笑，", "古来征战几人回。"]},
    12: {"title": "出塞", "author": "王昌龄", "content": ["秦时明月汉时关，", "万里长征人未还。", "但使龙城飞将在，", "不教胡马度阴山。"]},
    13: {"title": "芙蓉楼送辛渐", "author": "王昌龄", "content": ["寒雨连江夜入吴，", "平明送客楚山孤。", "洛阳亲友如相问，", "一片冰心在玉壶。"]},
    14: {"title": "早发白帝城", "author": "李白", "content": ["朝辞白帝彩云间，", "千里江陵一日还。", "两岸猿声啼不住，", "轻舟已过万重山。"]},
    15: {"title": "望庐山瀑布", "author": "李白", "content": ["日照香炉生紫烟，", "遥看瀑布挂前川。", "飞流直下三千尺，", "疑是银河落九天。"]},
    16: {"title": "赠汪伦", "author": "李白", "content": ["李白乘舟将欲行，", "忽闻岸上踏歌声。", "桃花潭水深千尺，", "不及汪伦送我情。"]},
    17: {"title": "黄鹤楼送孟浩然之广陵", "author": "李白", "content": ["故人西辞黄鹤楼，", "烟花三月下扬州。", "孤帆远影碧空尽，", "唯见长江天际流。"]},
    18: {"title": "望天门山", "author": "李白", "content": ["天门中断楚江开，", "碧水东流至此回。", "两岸青山相对出，", "孤帆一片日边来。"]},
    19: {"title": "山居秋暝", "author": "王维", "content": ["空山新雨后，", "天气晚来秋。", "明月松间照，", "清泉石上流。", "竹喧归浣女，", "莲动下渔舟。", "随意春芳歇，", "王孙自可留。"]},
    20: {"title": "使至塞上", "author": "王维", "content": ["单车欲问边，", "属国过居延。", "征蓬出汉塞，", "归雁入胡天。", "大漠孤烟直，", "长河落日圆。", "萧关逢候骑，", "都护在燕然。"]},
    21: {"title": "送友人", "author": "李白", "content": ["青山横北郭，", "白水绕东城。", "此地一为别，", "孤蓬万里征。", "浮云游子意，", "落日故人情。", "挥手自兹去，", "萧萧班马鸣。"]},
    22: {"title": "月下独酌", "author": "李白", "content": ["天若不爱酒，", "酒星不在天。", "地若不爱酒，", "地应无酒泉。", "天地既爱酒，", "爱酒不愧天。", "已闻清比圣，", "复道浊如贤。"]},
    23: {"title": "春思", "author": "李白", "content": ["燕草如碧丝，", "秦桑低绿枝。", "当君怀归日，", "是妾断肠时。", "春风不相识，", "何事入罗帏？"]},
    24: {"title": "夜宿山寺", "author": "李白", "content": ["危楼高百尺，", "手可摘星辰。", "不敢高声语，", "恐惊天上人。"]},
    25: {"title": "独坐敬亭山", "author": "李白", "content": ["众鸟高飞尽，", "孤云独去闲。", "相看两不厌，", "只有敬亭山。"]},
    26: {"title": "登金陵凤凰台", "author": "李白", "content": ["凤凰台上凤凰游，", "凤去台空江自流。", "吴宫花草埋幽径，", "晋代衣冠成古丘。", "三山半落青天外，", "二水中分白鹭洲。", "总为浮云能蔽日，", "长安不见使人愁。"]},
    27: {"title": "渡荆门送别", "author": "李白", "content": ["渡远荆门外，", "来从楚国游。", "山随平野尽，", "江入大荒流。", "月下飞天镜，", "云生结海楼。", "仍怜故乡水，", "万里送行舟。"]},
    28: {"title": "从军行", "author": "王昌龄", "content": ["青海长云暗雪山，", "孤城遥望玉门关。", "黄沙百战穿金甲，", "不破楼兰终不还。"]},
    29: {"title": "凉州词", "author": "王之涣", "content": ["黄河远上白云间，", "一片孤城万仞山。", "羌笛何须怨杨柳，", "春风不度玉门关。"]},
    30: {"title": "别董大", "author": "高适", "content": ["千里黄云白日曛，", "北风吹雁雪纷纷。", "莫愁前路无知己，", "天下谁人不识君。"]}
}

# ===================== 核心功能逻辑 =====================
current_poem_num = 1  # 当前浏览的唐诗序号


def display_current_poem():
    """展示当前序号的唐诗"""
    text_display.delete(1.0, tk.END)  # 清空展示区
    poem = tang_poems[current_poem_num]
    # 格式化展示内容（仅用基础字符，避免Tcl报错）
    display_content = f"唐诗三百首精选 - 第{current_poem_num}/30首\n\n"
    display_content += f"标题：{poem['title']}\n"
    display_content += f"作者：{poem['author']}\n\n"
    display_content += "内容：\n"
    for line in poem['content']:
        display_content += f"  {line}\n"
    text_display.insert(tk.INSERT, display_content)
    # 更新序号标签
    label_num.config(text=f"当前：第{current_poem_num}首")


def prev_poem():
    """上一首"""
    global current_poem_num
    if current_poem_num > 1:
        current_poem_num -= 1
        display_current_poem()


def next_poem():
    """下一首"""
    global current_poem_num
    if current_poem_num < 30:
        current_poem_num += 1
        display_current_poem()


# ===================== 极简界面搭建 =====================
if __name__ == "__main__":
    # 主窗口设置
    root = tk.Tk()
    root.title("唐诗三百首精选 - 30首")
    root.geometry("800x600")
    root.resizable(True, True)

    # 样式设置
    style = ttk.Style()
    style.configure("TButton", font=("微软雅黑", 12))
    style.configure("TLabel", font=("微软雅黑", 12))

    # 顶部标题区
    frame_title = ttk.Frame(root, padding="15")
    frame_title.pack(fill=tk.X)
    label_main = ttk.Label(
        frame_title, text="唐诗三百首精选（30首）", font=("微软雅黑", 14, "bold"))
    label_main.pack(pady=5)
    # 当前序号标签
    label_num = ttk.Label(
        frame_title, text=f"当前：第{current_poem_num}首", font=("微软雅黑", 11))
    label_num.pack(pady=3)

    # 中间按钮区
    frame_buttons = ttk.Frame(root, padding="10")
    frame_buttons.pack(fill=tk.X)
    # 上一首按钮
    btn_prev = ttk.Button(frame_buttons, text="上一首",
                          command=prev_poem, width=15)
    btn_prev.pack(side=tk.LEFT, padx=20, pady=5)
    # 下一首按钮
    btn_next = ttk.Button(frame_buttons, text="下一首",
                          command=next_poem, width=15)
    btn_next.pack(side=tk.RIGHT, padx=20, pady=5)

    # 底部展示区
    frame_display = ttk.Frame(root, padding="15")
    frame_display.pack(fill=tk.BOTH, expand=True)
    # 滚动文本框（展示唐诗，护眼背景）
    text_display = scrolledtext.ScrolledText(
        frame_display,
        font=("宋体", 13),
        wrap=tk.WORD,
        bg="#f8f9fa"
    )
    text_display.pack(fill=tk.BOTH, expand=True)

    # 初始化展示第一首唐诗
    display_current_poem()

    # 启动主循环
    root.mainloop()
