import tkinter as tk
from tkinter import ttk, messagebox
from PIL import Image, ImageDraw, ImageFont, ImageTk
import random
import os
from datetime import datetime

# ================== 数据 ==================

LOCATIONS = [
    {
        "id": 1,
        "name": "主馆区",
        "desc": "基本陈列《铁军忠魂》\n馆藏文物1.8万余件",
        "img_color": (220, 180, 160)  # 浅棕色
    },
    {
        "id": 2,
        "name": "重建军部\n纪念塔",
        "desc": "1941年新四军在盐城重建军部\n纪念塔高33.5米",
        "img_color": (180, 200, 220)  # 浅蓝色
    },
    {
        "id": 3,
        "name": "泰山庙\n军部旧址",
        "desc": "中共中央华中局旧址所在地\n现为省级文物保护单位",
        "img_color": (200, 220, 180)  # 浅绿色
    },
    {
        "id": 4,
        "name": "碑林区",
        "desc": "将帅题词碑廊\n镌刻着新四军将帅的珍贵手迹",
        "img_color": (220, 200, 240)  # 浅紫色
    },
    {
        "id": 5,
        "name": "国防园",
        "desc": "大型兵器陈列室外展区\n展示抗战时期的武器装备",
        "img_color": (240, 220, 180)  # 浅黄色
    }
]

# 重大历史事件数据
HISTORICAL_EVENTS = [
    {
        "date": "1937年10月12日",
        "title": "新四军成立",
        "description": "国共两党达成协议，将南方八省红军游击队改编为国民革命军陆军新编第四军，简称新四军。叶挺任军长，项英任副军长。",
        "significance": "标志着我党在华中地区有了正规的抗日武装力量。"
    },
    {
        "date": "1938年4月",
        "title": "挺进华中敌后",
        "description": "新四军第1、2、3支队先后到达皖南岩寺地区集中，第4支队在皖中舒城地区集中，随后向苏南、皖南、皖中敌后挺进。",
        "significance": "拉开了新四军在华中敌后开展抗日游击战争的序幕。"
    },
    {
        "date": "1941年1月",
        "title": "皖南事变",
        "description": "新四军军部及所属部队9000余人奉命北移，在皖南泾县茂林地区遭国民党军8万余人伏击。新四军奋战七昼夜，除2000余人分散突围外，大部牺牲或被俘。",
        "significance": "这是国民党第二次反共高潮的最高峰，也是抗战期间国共关系最紧张的时刻。"
    },
    {
        "date": "1941年1月25日",
        "title": "盐城重建军部",
        "description": "中共中央军委发布重建新四军军部的命令。1月28日，新的军部在江苏盐城正式成立，陈毅为代军长，刘少奇为政治委员。",
        "significance": "标志着新四军在遭受重大损失后，在盐城获得新生，盐城成为华中抗战的政治军事指挥中心。"
    },
    {
        "date": "1941年7月",
        "title": "盐阜反扫荡",
        "description": "日伪军1.7万余人对盐阜区发动大规模扫荡，新四军第3师在黄克诚师长指挥下，采取灵活战术，历时一个多月，毙伤日伪军3800余人。",
        "significance": "粉碎了日军摧毁盐阜抗日根据地的企图，巩固了苏北抗战阵地。"
    },
    {
        "date": "1943年3月18日",
        "title": "刘老庄战斗",
        "description": "新四军第3师7旅19团4连82名官兵，在江苏淮阴刘老庄阻击日军1000余人。激战整日，毙伤日军170余人，全连82人全部壮烈牺牲。",
        "significance": "展现了新四军指战员宁死不屈、血战到底的英雄气概，是抗战史上著名的以少抗多的战例。"
    },
    {
        "date": "1944年3月",
        "title": "车桥战役",
        "description": "新四军第1师在粟裕指挥下，在江苏淮安车桥地区对日伪军发起进攻，歼灭日军460余人、伪军480余人，攻克据点13处。",
        "significance": "是新四军在抗战期间一次歼灭日军最多的战役，实现了华中抗战形势的根本好转。"
    },
    {
        "date": "1945年8月",
        "title": "全面反攻",
        "description": "日本宣布无条件投降后，新四军各部在华中地区对日伪军展开全面反攻，解放县城40余座，歼灭日伪军5万余人。",
        "significance": "为新四军抗战史画上了圆满句号，为解放战争的胜利奠定了基础。"
    },
    {
        "date": "1986年10月",
        "title": "盐城新四军纪念馆建成",
        "description": "盐城新四军纪念馆正式建成对外开放，成为全国唯一全面反映新四军抗战征程的综合性纪念馆。",
        "significance": "为传承红色基因、弘扬铁军精神提供了重要平台，现为国家一级博物馆。"
    }
]

QUESTIONS = [
    {
        "id": 1,
        "question": "新四军全称是什么？",
        "options": ["国民革命军新编第四军", "八路军新编第四军", "中国工农红军第四军", "中国人民志愿军"],
        "answer": 0,
        "img_color": (200, 220, 240)
    },
    {
        "id": 2,
        "question": "新四军在盐城重建军部的时间是？",
        "options": ["1937年10月", "1941年1月", "1945年8月", "1949年10月"],
        "answer": 1,
        "img_color": (180, 200, 180)
    },
    {
        "id": 3,
        "question": "新四军是由南方几省的红军游击队改编而成？",
        "options": ["6个省", "8个省", "10个省", "12个省"],
        "answer": 1,
        "img_color": (220, 200, 200)
    },
    {
        "id": 4,
        "question": "皖南事变发生在哪一年？",
        "options": ["1937年", "1941年", "1943年", "1945年"],
        "answer": 1,
        "img_color": (240, 180, 180)
    },
    {
        "id": 5,
        "question": "盐城新四军纪念馆于哪一年建成开放？",
        "options": ["1976年", "1986年", "1996年", "2006年"],
        "answer": 1,
        "img_color": (200, 240, 220)
    },
    {
        "id": 6,
        "question": "新四军的首任军长是谁？",
        "options": ["叶挺", "陈毅", "刘少奇", "项英"],
        "answer": 0,
        "img_color": (220, 200, 240)
    },
    {
        "id": 7,
        "question": "在刘老庄战斗中壮烈牺牲的新四军部队有多少人？",
        "options": ["58人", "72人", "82人", "96人"],
        "answer": 2,
        "img_color": (180, 220, 200)
    },
    {
        "id": 8,
        "question": "车桥战役是新四军在哪一年进行的著名战役？",
        "options": ["1942年", "1943年", "1944年", "1945年"],
        "answer": 2,
        "img_color": (200, 200, 220)
    }
]

# ================== 图片生成器 ==================

class ImageGenerator:
    @staticmethod
    def create_location_image(color, title, size=(400, 300)):
        """创建地点图片"""
        img = Image.new('RGB', size, color=color)
        draw = ImageDraw.Draw(img)
        
        # 绘制边框
        draw.rectangle([10, 10, size[0]-10, size[1]-10], 
                      outline=(100, 100, 100), width=3)
        
        # 绘制标题
        try:
            font = ImageFont.truetype("simhei.ttf", 24)
        except:
            font = ImageFont.load_default()
        
        # 居中显示标题
        draw.text((size[0]//2, size[1]//2), title, 
                 font=font, fill=(50, 50, 50), anchor="mm")
        
        # 添加水印
        watermark = "新四军纪念馆"
        draw.text((size[0]//2, size[1]-30), watermark, 
                 font=font, fill=(150, 150, 150, 128), anchor="mm")
        
        return img
    
    @staticmethod
    def create_question_image(color, text, size=(400, 220)):
        """创建题目图片"""
        img = Image.new('RGB', size, color=color)
        draw = ImageDraw.Draw(img)
        
        # 绘制装饰性边框
        draw.rectangle([5, 5, size[0]-5, size[1]-5], 
                      outline=(150, 150, 150), width=2)
        
        # 绘制内边框
        draw.rectangle([15, 15, size[0]-15, size[1]-15], 
                      outline=(200, 200, 200), width=1)
        
        # 添加文字
        try:
            font = ImageFont.truetype("simhei.ttf", 20)
        except:
            font = ImageFont.load_default()
        
        # 处理多行文本
        lines = text.split('\n')
        for i, line in enumerate(lines):
            y = size[1]//2 - (len(lines)-1)*15 + i*30
            draw.text((size[0]//2, y), line, 
                     font=font, fill=(60, 60, 60), anchor="mm")
        
        return img

# ================== 主程序 ==================

class MuseumApp:
    def __init__(self, root):
        self.root = root
        self.root.title("盐城新四军纪念馆 - 虚拟导览与知识问答")
        self.root.geometry("1100x700+50+50")
        self.root.configure(bg='#f5f5f5')
        
        # 初始化
        self.score = 0
        self.current_q_index = -1
        self.image_gen = ImageGenerator()
        
        # 创建UI
        self.setup_ui()
        
        # 显示欢迎消息
        self.show_welcome_message()
    
    def show_welcome_message(self):
        """显示欢迎消息"""
        welcome_text = "欢迎来到盐城新四军纪念馆虚拟导览系统！\n\n左侧地图可点击查看各场馆详情，\n右侧可浏览重大历史事件和参与知识问答。"
        messagebox.showinfo("欢迎", welcome_text)
    
    def setup_ui(self):
        """设置用户界面"""
        # 创建主框架
        main_frame = ttk.Frame(self.root, padding="10")
        main_frame.pack(fill=tk.BOTH, expand=True)
        
        # 左侧 - 地图区域
        self.setup_left_panel(main_frame)
        
        # 右侧 - 内容区域
        self.setup_right_panel(main_frame)
    
    def setup_left_panel(self, parent):
        """设置左侧面板（地图）"""
        left_frame = ttk.LabelFrame(parent, text="📍 纪念馆浏览线图", 
                                   width=350, padding="10")
        left_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=False, padx=(0, 10))
        
        # 地图标题
        ttk.Label(left_frame, text="新四军纪念馆平面示意图", 
                 font=("微软雅黑", 12, "bold")).pack(pady=5)
        
        # 创建画布
        self.canvas = tk.Canvas(left_frame, width=320, height=450, 
                               bg='#FFF9F0', relief='ridge', bd=2)
        self.canvas.pack(pady=10)
        
        # 绘制地图轮廓
        self.canvas.create_rectangle(40, 30, 280, 420, 
                                    outline='#8B0000', width=2, dash=(4, 2))
        
        # 绘制地图点位
        self.draw_map_points()
        
        # 操作按钮
        btn_frame = ttk.Frame(left_frame)
        btn_frame.pack(fill=tk.X, pady=10)
        
        ttk.Button(btn_frame, text="开始答题", 
                  command=self.show_quiz_tab).pack(side=tk.RIGHT, padx=5)
        ttk.Button(btn_frame, text="重大事件", 
                  command=self.show_events_tab).pack(side=tk.RIGHT, padx=5)
        ttk.Button(btn_frame, text="重置", 
                  command=self.reset_display).pack(side=tk.LEFT, padx=5)
    
    def draw_map_points(self):
        """绘制地图点位"""
        self.location_buttons = []
        
        # 点位坐标
        points = [
            (100, 80),    # 主馆区
            (240, 150),   # 纪念塔
            (160, 240),   # 泰山庙
            (240, 320),   # 碑林区
            (100, 380)    # 国防园
        ]
        
        for i, (x, y) in enumerate(points):
            location = LOCATIONS[i]
            
            # 绘制圆形点位
            btn_id = self.canvas.create_oval(x-20, y-20, x+20, y+20,
                                           fill='#CD5C5C', outline='#8B0000', 
                                           width=2, tags=f"btn_{i}")
            
            # 绘制数字
            self.canvas.create_text(x, y, text=str(location["id"]), 
                                   font=("Arial", 10, "bold"), fill="white")
            
            # 绘制名称
            name_lines = location["name"].split('\n')
            for j, line in enumerate(name_lines):
                self.canvas.create_text(x, y+30+j*12, text=line,
                                      font=("微软雅黑", 8), fill='#333')
            
            # 绑定点击事件
            self.canvas.tag_bind(btn_id, '<Button-1>', 
                                lambda e, idx=i: self.show_location_info(idx))
            
            self.location_buttons.append(btn_id)
    
    def show_location_info(self, idx):
        """显示地点信息"""
        if idx < 0 or idx >= len(LOCATIONS):
            return
        
        location = LOCATIONS[idx]
        
        # 创建详情窗口
        detail_window = tk.Toplevel(self.root)
        detail_window.title(f"地点详情 - {location['name'].replace(chr(10), ' ')}")
        detail_window.geometry("500x450+200+100")
        detail_window.configure(bg='#f5f5f5')
        
        # 标题
        title_label = tk.Label(detail_window, text=location["name"], 
                              font=("微软雅黑", 16, "bold"), bg='#f5f5f5')
        title_label.pack(pady=10)
        
        # 创建图片
        img = self.image_gen.create_location_image(
            location["img_color"], 
            location["name"]
        )
        
        # 调整图片大小
        img.thumbnail((400, 250))
        photo = ImageTk.PhotoImage(img)
        
        # 显示图片
        img_label = tk.Label(detail_window, image=photo, bg='white')
        img_label.image = photo
        img_label.pack(pady=10)
        
        # 描述
        desc_text = location["desc"]
        desc_label = tk.Label(detail_window, text=desc_text,
                             font=("微软雅黑", 11), justify=tk.LEFT,
                             bg='#f5f5f5', wraplength=400)
        desc_label.pack(pady=10, padx=20)
        
        # 关闭按钮
        ttk.Button(detail_window, text="关闭", 
                  command=detail_window.destroy).pack(pady=10)
    
    def setup_right_panel(self, parent):
        """设置右侧面板（内容）"""
        right_frame = ttk.LabelFrame(parent, text="📖 内容展示区", padding="10")
        right_frame.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True)
        
        # 创建标签页
        self.notebook = ttk.Notebook(right_frame)
        self.notebook.pack(fill=tk.BOTH, expand=True)
        
        # 欢迎页
        self.setup_welcome_tab()
        
        # 重大事件页
        self.setup_events_tab()
        
        # 知识问答页
        self.setup_quiz_tab()
    
    def setup_welcome_tab(self):
        """设置欢迎页"""
        self.welcome_tab = ttk.Frame(self.notebook)
        self.notebook.add(self.welcome_tab, text="🏠 欢迎")
        
        # 创建滚动区域
        canvas = tk.Canvas(self.welcome_tab, bg='#FFF9F0')
        scrollbar = ttk.Scrollbar(self.welcome_tab, orient=tk.VERTICAL, command=canvas.yview)
        canvas.configure(yscrollcommand=scrollbar.set)
        
        scrollable_frame = ttk.Frame(canvas)
        canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")
        
        # 欢迎内容
        welcome_text = """盐城市新四军纪念馆

📍 地址：江苏省盐城市建军东路159号

🌟 纪念馆简介：
盐城新四军纪念馆是全国唯一一座全面反映新四军抗战征程的综合性纪念馆，也是国家一级博物馆、全国爱国主义教育示范基地。

馆内基本陈列《铁军忠魂》分为七个部分，全面展示了新四军在华中敌后浴血奋战的八年抗战史。馆藏文物史料18000余件，其中珍贵文物572件/套。

🏛 主要展区：
1. 主馆区 - 基本陈列《铁军忠魂》
2. 重建军部纪念塔 - 纪念1941年新四军重建军部
3. 泰山庙军部旧址 - 中共中央华中局旧址
4. 碑林区 - 将帅题词碑廊
5. 国防园 - 大型兵器陈列

👈 使用指南：
• 点击左侧地图上的编号，查看各场馆详情
• 点击「重大事件」标签页，浏览新四军历史
• 点击「开始答题」进行知识问答测试

传承红色基因，弘扬铁军精神！"""
        
        text_label = tk.Label(scrollable_frame, text=welcome_text,
                            font=("微软雅黑", 11), justify=tk.LEFT,
                            bg='#FFF9F0', wraplength=500)
        text_label.pack(padx=20, pady=20)
        
        # 更新滚动区域大小
        scrollable_frame.update_idletasks()
        canvas.config(scrollregion=canvas.bbox("all"))
        
        # 打包canvas和滚动条
        canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
        scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
    
    def setup_events_tab(self):
        """设置重大事件页"""
        self.events_tab = ttk.Frame(self.notebook)
        self.notebook.add(self.events_tab, text="📅 重大事件")
        
        # 创建主框架
        main_frame = ttk.Frame(self.events_tab)
        main_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
        
        # 标题
        title_label = tk.Label(main_frame, 
                              text="新四军重大历史事件时间轴",
                              font=("微软雅黑", 14, "bold"),
                              fg='#8B0000')
        title_label.pack(pady=10)
        
        # 创建Canvas用于滚动
        canvas = tk.Canvas(main_frame, bg='#FFF9F0')
        scrollbar = ttk.Scrollbar(main_frame, orient=tk.VERTICAL, command=canvas.yview)
        canvas.configure(yscrollcommand=scrollbar.set)
        
        # 创建滚动内容框架
        content_frame = ttk.Frame(canvas)
        canvas.create_window((0, 0), window=content_frame, anchor="nw")
        
        # 添加事件时间轴
        self.create_timeline(content_frame)
        
        # 更新滚动区域
        content_frame.update_idletasks()
        canvas.config(scrollregion=canvas.bbox("all"))
        
        # 布局canvas和滚动条
        canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
        scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
    
    def create_timeline(self, parent):
        """创建时间轴"""
        for i, event in enumerate(HISTORICAL_EVENTS):
            # 创建事件卡片
            event_frame = ttk.Frame(parent, relief=tk.GROOVE, 
                                   borderwidth=2, padding=10)
            event_frame.pack(fill=tk.X, pady=8, padx=5)
            
            # 左侧 - 日期
            date_frame = ttk.Frame(event_frame)
            date_frame.pack(side=tk.LEFT, fill=tk.Y, padx=(0, 15))
            
            # 日期圆点
            date_canvas = tk.Canvas(date_frame, width=30, height=30, 
                                   bg='#FFF9F0', highlightthickness=0)
            date_canvas.pack()
            date_canvas.create_oval(5, 5, 25, 25, fill='#CD5C5C', outline='#8B0000')
            
            # 日期文本
            date_label = tk.Label(date_frame, text=event["date"],
                                 font=("微软雅黑", 10, "bold"),
                                 fg='#8B0000', bg='#FFF9F0')
            date_label.pack(pady=5)
            
            # 右侧 - 事件内容
            content_frame = ttk.Frame(event_frame)
            content_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
            
            # 事件标题
            title_label = tk.Label(content_frame, text=event["title"],
                                  font=("微软雅黑", 12, "bold"),
                                  fg='#333333', bg='#FFF9F0',
                                  anchor='w')
            title_label.pack(anchor='w', pady=(0, 5))
            
            # 事件描述
            desc_text = event["description"]
            desc_label = tk.Label(content_frame, text=desc_text,
                                 font=("微软雅黑", 10),
                                 fg='#555555', bg='#FFF9F0',
                                 justify=tk.LEFT, wraplength=500)
            desc_label.pack(anchor='w', pady=(0, 5))
            
            # 历史意义
            sig_label = tk.Label(content_frame, 
                                text=f"📌 历史意义：{event['significance']}",
                                font=("微软雅黑", 9, "italic"),
                                fg='#777777', bg='#FFF9F0',
                                justify=tk.LEFT, wraplength=500)
            sig_label.pack(anchor='w')
    
    def setup_quiz_tab(self):
        """设置知识问答页"""
        self.quiz_tab = ttk.Frame(self.notebook)
        self.notebook.add(self.quiz_tab, text="❓ 知识问答")
        
        # 主框架
        main_frame = ttk.Frame(self.quiz_tab)
        main_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
        
        # 题目显示区域
        self.question_label = tk.Label(main_frame, 
                                      text="点击【下一题】开始答题",
                                      font=("微软雅黑", 12, "bold"),
                                      wraplength=450, justify=tk.CENTER)
        self.question_label.pack(pady=10)
        
        # 图片显示区域
        self.image_frame = ttk.Frame(main_frame, relief=tk.GROOVE, 
                                    borderwidth=2, height=200)
        self.image_frame.pack(fill=tk.X, pady=10)
        self.image_frame.pack_propagate(False)
        
        self.image_label = tk.Label(self.image_frame, bg='white')
        self.image_label.pack(expand=True, fill=tk.BOTH)
        
        # 选项区域
        self.option_frame = ttk.Frame(main_frame)
        self.option_frame.pack(fill=tk.X, pady=10)
        
        self.answer_var = tk.IntVar(value=-1)
        self.option_buttons = []
        
        for i in range(4):
            frame = ttk.Frame(self.option_frame)
            frame.pack(fill=tk.X, pady=2)
            
            rb = tk.Radiobutton(frame, text="", 
                               variable=self.answer_var, 
                               value=i,
                               font=("微软雅黑", 10),
                               bg='#FFF9F0')
            rb.pack(side=tk.LEFT, anchor='w')
            
            option_label = tk.Label(frame, text="", 
                                   font=("微软雅黑", 10),
                                   bg='#FFF9F0')
            option_label.pack(side=tk.LEFT, padx=5)
            
            self.option_buttons.append((rb, option_label))
        
        # 按钮区域
        btn_frame = ttk.Frame(main_frame)
        btn_frame.pack(pady=10)
        
        ttk.Button(btn_frame, text="下一题", 
                  command=self.next_question).pack(side=tk.LEFT, padx=5)
        ttk.Button(btn_frame, text="提交答案", 
                  command=self.check_answer).pack(side=tk.LEFT, padx=5)
        ttk.Button(btn_frame, text="重置积分", 
                  command=self.reset_score).pack(side=tk.LEFT, padx=5)
        
        # 统计信息
        stats_frame = ttk.Frame(main_frame)
        stats_frame.pack(pady=5)
        
        # 积分显示
        self.score_label = tk.Label(stats_frame, 
                                   text=f"当前积分：{self.score}",
                                   font=("微软雅黑", 10, "bold"),
                                   fg='#8B0000')
        self.score_label.pack(side=tk.LEFT, padx=20)
        
        # 题库信息
        self.quiz_info_label = tk.Label(stats_frame,
                                       text=f"题库总数：{len(QUESTIONS)} 题",
                                       font=("微软雅黑", 9),
                                       fg='#666666')
        self.quiz_info_label.pack(side=tk.LEFT, padx=20)
    
    def show_quiz_tab(self):
        """切换到问答标签页"""
        self.notebook.select(2)  # 选择第三个标签页
    
    def show_events_tab(self):
        """切换到重大事件标签页"""
        self.notebook.select(1)  # 选择第二个标签页
    
    def next_question(self):
        """下一题"""
        if not QUESTIONS:
            messagebox.showwarning("提示", "题库为空")
            return
        
        # 随机选择题目
        self.current_q_index = random.randint(0, len(QUESTIONS)-1)
        question = QUESTIONS[self.current_q_index]
        
        # 显示题目
        self.question_label.config(text=question["question"])
        
        # 显示图片
        img = self.image_gen.create_question_image(
            question["img_color"],
            f"题目 {question['id']}"
        )
        
        # 调整图片大小
        img.thumbnail((400, 180))
        photo = ImageTk.PhotoImage(img)
        
        self.image_label.config(image=photo)
        self.image_label.image = photo
        
        # 显示选项
        self.answer_var.set(-1)  # 重置选择
        
        for i, (rb, label) in enumerate(self.option_buttons):
            if i < len(question["options"]):
                option_text = question["options"][i]
                label.config(text=option_text)
                rb.config(state=tk.NORMAL)
            else:
                label.config(text="")
                rb.config(state=tk.DISABLED)
    
    def check_answer(self):
        """检查答案"""
        if self.current_q_index == -1:
            messagebox.showwarning("提示", "请先点击【下一题】")
            return
        
        if self.answer_var.get() == -1:
            messagebox.showwarning("提示", "请先选择一个答案")
            return
        
        question = QUESTIONS[self.current_q_index]
        
        if self.answer_var.get() == question["answer"]:
            self.score += 10
            messagebox.showinfo("✅ 回答正确！", 
                              f"获得10分！\n当前积分：{self.score}")
        else:
            correct_answer = question["options"][question["answer"]]
            messagebox.showerror("❌ 回答错误", 
                               f"正确答案是：{correct_answer}\n"
                               f"当前积分：{self.score}")
        
        # 更新积分显示
        self.score_label.config(text=f"当前积分：{self.score}")
        
        # 重置选择
        self.answer_var.set(-1)
    
    def reset_score(self):
        """重置积分"""
        self.score = 0
        self.score_label.config(text=f"当前积分：{self.score}")
        messagebox.showinfo("提示", "积分已重置")
    
    def reset_display(self):
        """重置显示"""
        # 切换到欢迎页
        self.notebook.select(0)
        
        # 重置问答页
        self.current_q_index = -1
        self.answer_var.set(-1)
        self.question_label.config(text="点击【下一题】开始答题")
        self.image_label.config(image='')
        
        for rb, label in self.option_buttons:
            label.config(text="")
        
        messagebox.showinfo("提示", "已重置显示")

# ================== 运行程序 ==================

def main():
    root = tk.Tk()
    
    # 设置窗口图标
    try:
        root.iconbitmap(default="")
    except:
        pass
    
    app = MuseumApp(root)
    
    # 设置窗口居中
    root.update_idletasks()
    width = root.winfo_width()
    height = root.winfo_height()
    x = (root.winfo_screenwidth() // 2) - (width // 2)
    y = (root.winfo_screenheight() // 2) - (height // 2)
    root.geometry(f'{width}x{height}+{x}+{y}')
    
    root.mainloop()

if __name__ == "__main__":
    main()