import tkinter as tk
from tkinter import ttk, scrolledtext


class ForbiddenCityApp:
    def __init__(self, root):
        self.root = root
        self.root.title("故宫博物馆介绍")
        self.root.geometry("850x650")
        self.root.configure(bg="#f5f5dc")  # 米黄色背景

        # 设置样式
        self.style = ttk.Style()
        self.style.configure('Title.TLabel', font=(
            'SimHei', 22, 'bold'), foreground='#8B0000')
        self.style.configure('Info.TLabel', font=('SimHei', 11))
        self.style.configure('Header.TLabel', font=(
            'SimHei', 13, 'bold'), foreground='#8B0000')

        self.create_widgets()

    def create_widgets(self):
        # ===== 顶部标题栏 =====
        title_frame = tk.Frame(self.root, bg="#8B0000", height=70)
        title_frame.pack(fill="x")
        title_frame.pack_propagate(False)

        title_label = ttk.Label(title_frame, text="故宫博物院",
                                style='Title.TLabel', background="#8B0000", foreground="white")
        title_label.pack(pady=15)

        # ===== 个人信息区域 =====
        info_frame = tk.Frame(self.root, bg="#f5f5dc", padx=15, pady=8)
        info_frame.pack(fill="x")

        # 你的个人信息
        student_info = "讲解员：卢思成   |   东台市第一小学   |   六（10）班   |   19号"
        info_label = ttk.Label(info_frame, text=student_info,
                               style='Info.TLabel', foreground="#8B0000")
        info_label.pack(anchor="w")

        # ===== 分隔线 =====
        separator = tk.Frame(self.root, height=2, bg="#8B0000")
        separator.pack(fill="x", padx=10)

        # ===== 选项卡区域 =====
        notebook = ttk.Notebook(self.root)
        notebook.pack(fill="both", expand=True, padx=10, pady=10)

        # --- 概况标签页 ---
        overview_tab = tk.Frame(notebook, bg="white")
        notebook.add(overview_tab, text=" 概况 ")
        self.create_overview_tab(overview_tab)

        # --- 主要建筑标签页 ---
        buildings_tab = tk.Frame(notebook, bg="white")
        notebook.add(buildings_tab, text=" 主要建筑 ")
        self.create_buildings_tab(buildings_tab)

        # --- 文物藏品标签页 ---
        artifacts_tab = tk.Frame(notebook, bg="white")
        notebook.add(artifacts_tab, text=" 文物藏品 ")
        self.create_artifacts_tab(artifacts_tab)

        # --- 参观指南标签页 ---
        visit_tab = tk.Frame(notebook, bg="white")
        notebook.add(visit_tab, text=" 参观指南 ")
        self.create_visit_tab(visit_tab)

        # ===== 底部版权栏 =====
        footer_frame = tk.Frame(self.root, bg="#8B0000", height=35)
        footer_frame.pack(fill="x", side="bottom")
        footer_frame.pack_propagate(False)

        footer_label = tk.Label(footer_frame, text="© 2026 故宫博物院介绍  |  制作者：卢思成",
                                bg="#8B0000", fg="white", font=('SimHei', 9))
        footer_label.pack(pady=8)

    def create_overview_tab(self, parent):
        """创建概况标签页"""
        text_area = scrolledtext.ScrolledText(parent, wrap=tk.WORD, font=('SimHei', 11),
                                              bg="white", fg="#333333", padx=15, pady=15)
        text_area.pack(fill="both", expand=True)

        overview_content = """【故宫博物院概况】

故宫博物院位于北京市中心，是中国明清两代的皇家宫殿，旧称紫禁城。

▶ 历史沿革
始建于明永乐四年（1406年），建成于永乐十八年（1420年），历经明、清两代24位皇帝的统治，至今已有600多年历史。

▶ 建筑规模
• 占地面积：72万平方米
• 建筑面积：约15万平方米
• 宫殿数量：70多座
• 房间数量：9000余间

▶ 世界地位
故宫是世界上现存规模最大、保存最为完整的木质结构古建筑群之一，1987年被联合国教科文组织列为世界文化遗产。

▶ 藏品情况
现收藏文物超过186万件，涵盖几乎整个中国古代文明发展史，其中包括绘画、陶瓷、青铜器等珍贵文物。

▶ 建筑布局
故宫建筑分为外朝和内廷两部分：
• 外朝：以太和殿、中和殿、保和殿为中心，是举行重大典礼的场所。
• 内廷：以乾清宫、交泰殿、坤宁宫为中心，是皇帝和后妃的生活区域。"""

        text_area.insert(tk.END, overview_content)
        text_area.config(state=tk.DISABLED)

    def create_buildings_tab(self, parent):
        """创建主要建筑标签页"""
        canvas = tk.Canvas(parent, bg="white")
        scrollbar = ttk.Scrollbar(
            parent, orient="vertical", command=canvas.yview)
        scrollable_frame = tk.Frame(canvas, bg="white")

        scrollable_frame.bind("<Configure>", lambda e: canvas.configure(
            scrollregion=canvas.bbox("all")))
        canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")
        canvas.configure(yscrollcommand=scrollbar.set)

        # 绑定鼠标滚轮
        canvas.bind_all("<MouseWheel>", lambda e: canvas.yview_scroll(
            int(-1*(e.delta/120)), "units"))

        buildings = [
            ("太和殿", "俗称金銮殿，是故宫等级最高、规模最大的宫殿，高35米，面积2377平方米。用于举行皇帝登基、大婚、册立皇后等重大典礼。"),
            ("中和殿", "位于太和殿后，是一座方形殿宇。皇帝去太和殿大典前在此休息，并接受内阁、礼部官员行礼。"),
            ("保和殿", "位于中和殿后，是科举考试最高级别——殿试的举办地。清代除夕等重要宴会也在此举行。"),
            ("乾清宫", "内廷正殿，是明清16位皇帝的寝宫，也是皇帝日常处理政务的地方。"),
            ("交泰殿", "位于乾清宫与坤宁宫之间，是皇后生日接受庆贺礼的地方，存放着代表皇权的25方宝玺。"),
            ("坤宁宫", "明代为皇后寝宫，清代改为祭祀萨满神灵的场所，也是皇帝大婚时的洞房。"),
            ("御花园", "位于坤宁宫后方，占地1.1万平方米，布局对称，古柏老槐遍布，是宫廷内的休闲园林。")
        ]

        for i, (name, desc) in enumerate(buildings):
            frame = tk.Frame(scrollable_frame, bg="white",
                             relief="groove", bd=1, padx=10, pady=8)
            frame.pack(fill="x", padx=10, pady=5)

            name_label = tk.Label(frame, text=f"【{name}】", font=('SimHei', 12, 'bold'),
                                  fg="#8B0000", bg="white")
            name_label.pack(anchor="w")

            desc_label = tk.Label(frame, text=desc, font=('SimHei', 10), bg="white",
                                  justify="left", wraplength=700)
            desc_label.pack(anchor="w", pady=3)

        canvas.pack(side="left", fill="both", expand=True)
        scrollbar.pack(side="right", fill="y")

    def create_artifacts_tab(self, parent):
        """创建文物藏品标签页"""
        text_area = scrolledtext.ScrolledText(parent, wrap=tk.WORD, font=('SimHei', 11),
                                              bg="white", fg="#333333", padx=15, pady=15)
        text_area.pack(fill="both", expand=True)

        artifacts_content = """【故宫博物院馆藏珍品】

故宫博物院拥有丰富的文物收藏，涵盖了中国古代艺术的各个领域。

▶ 《清明上河图》
作者：北宋 张择端
简介：中国十大传世名画之一，描绘了北宋都城汴京（今开封）的繁荣景象，生动记录了当时的城市面貌和各阶层人民的生活状态。

▶ 《平复帖》
作者：西晋 陆机
简介：现存年代最早并真实可信的名家法帖，被誉为"法帖之祖"，是研究中国书法演变的重要实物资料。

▶ 大禹治水图玉山
年代：清代乾隆年间
简介：重达5350公斤，高224厘米，是中国玉器工艺史上的巅峰之作，也是世界上最大的玉雕作品之一。

▶ 金瓯永固杯
年代：清代
简介：皇帝每年元旦举行开笔仪式时专用的酒杯，象征"江山永固"。杯身镶嵌珍珠、宝石，制作精美绝伦。

▶ 掐丝珐琅缠枝莲纹象耳炉
年代：元代
简介：元代珐琅器的代表作，造型庄重，釉色浑厚，是现存最早的掐丝珐琅器物之一。

▶ 各种釉彩大瓶（瓷母）
年代：清代乾隆年间
简介：集多种釉彩工艺于一身，展示了当时高超的制瓷技术，被称为"瓷母"。"""

        text_area.insert(tk.END, artifacts_content)
        text_area.config(state=tk.DISABLED)

    def create_visit_tab(self, parent):
        """创建参观指南标签页"""
        canvas = tk.Canvas(parent, bg="white")
        scrollbar = ttk.Scrollbar(
            parent, orient="vertical", command=canvas.yview)
        scrollable_frame = tk.Frame(canvas, bg="white")

        scrollable_frame.bind("<Configure>", lambda e: canvas.configure(
            scrollregion=canvas.bbox("all")))
        canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")
        canvas.configure(yscrollcommand=scrollbar.set)

        canvas.bind_all("<MouseWheel>", lambda e: canvas.yview_scroll(
            int(-1*(e.delta/120)), "units"))

        visit_info = [
            ("开放时间", "旺季（4月1日-10月31日）：08:30-17:00\n淡季（11月1日-3月31日）：08:30-16:30\n※ 每周一闭馆（法定节假日除外）"),
            ("门票价格", "旺季门票：60元/人\n淡季门票：40元/人\n珍宝馆：10元/人\n钟表馆：10元/人\n※ 学生凭有效学生证可享受半价优惠"),
            ("交通方式", "公交线路：1路、2路、52路、82路、120路等至天安门东站或天安门西站\n地铁线路：1号线至天安门东站或天安门西站（A出口或B出口）"),
            ("推荐参观路线", "午门 → 太和门 → 太和殿 → 中和殿 → 保和殿 → 乾清宫 → 交泰殿 → 坤宁宫 → 御花园 → 神武门"),
            ("参观注意事项", "1. 禁止携带易燃易爆物品、管制刀具等危险品入内\n2. 禁止在展厅内吸烟、饮食、大声喧哗\n3. 部分展区禁止拍照，请留意标识\n4. 建议提前在官方网站或微信公众号预约购票\n5. 请爱护文物和古建筑，不要触摸展品")
        ]

        for title, content in visit_info:
            frame = tk.Frame(scrollable_frame, bg="white",
                             relief="solid", bd=1, padx=12, pady=8)
            frame.pack(fill="x", padx=10, pady=6)

            title_label = tk.Label(frame, text=title, font=('SimHei', 12, 'bold'),
                                   fg="#8B0000", bg="white")
            title_label.pack(anchor="w")

            content_label = tk.Label(frame, text=content, font=('SimHei', 10), bg="white",
                                     justify="left", wraplength=700)
            content_label.pack(anchor="w", pady=3)

        canvas.pack(side="left", fill="both", expand=True)
        scrollbar.pack(side="right", fill="y")


def main():
    root = tk.Tk()
    app = ForbiddenCityApp(root)
    root.mainloop()


if __name__ == "__main__":
    main()
