import tkinter as tk
from tkinter import ttk, messagebox, scrolledtext
from datetime import datetime, timedelta
import calendar
import os

class DesktopComputer:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("个人计算机桌面")
        self.root.geometry("800x600")
        
        # 设置主窗口背景
        self.root.configure(bg="#f0f0f0")
        
        # 顶部状态栏
        self.create_status_bar()
        
        # 主界面区域
        self.create_main_area()
        
        # 桌面图标区域
        self.create_desktop_icons()
        
        # 底部任务栏
        self.create_taskbar()
    
    def create_status_bar(self):
        """创建顶部状态栏"""
        status_frame = tk.Frame(self.root, height=30, bg="#2c3e50")
        status_frame.pack(fill="x")
        
        # 时间显示
        self.time_label = tk.Label(status_frame, font=("Arial", 10), bg="#2c3e50", fg="white")
        self.time_label.pack(side="right", padx=10)
        
        # 日期显示
        self.date_label = tk.Label(status_frame, text=self.get_current_date(), 
                                   font=("Arial", 10), bg="#2c3e50", fg="white")
        self.date_label.pack(side="left", padx=10)
        
        # 更新时间
        self.update_time()
    
    def get_current_date(self):
        """获取当前日期"""
        now = datetime.now()
        return now.strftime("%Y年%m月%d日")
    
    def update_time(self):
        """更新时间显示"""
        current_time = datetime.now().strftime("%H:%M:%S")
        self.time_label.config(text=current_time)
        self.root.after(1000, self.update_time)  # 每秒更新一次
    
    def create_main_area(self):
        """创建主界面区域"""
        main_frame = tk.Frame(self.root, bg="#f0f0f0")
        main_frame.pack(expand=True, fill="both", padx=20, pady=20)
        
        # 欢迎标签
        welcome_label = tk.Label(main_frame, text="欢迎使用个人计算机", 
                                 font=("Arial", 20, "bold"), bg="#f0f0f0", fg="#2c3e50")
        welcome_label.pack(pady=20)
    
    def create_desktop_icons(self):
        """创建桌面图标"""
        icons_frame = tk.Frame(self.root, bg="#f0f0f0")
        icons_frame.pack(fill="both", expand=True, padx=20)
        
        # 计算器图标
        calc_btn = tk.Button(icons_frame, text="🧮 计算器", command=self.open_calculator,
                           font=("Arial", 12), bg="white", relief="flat", 
                           width=15, height=2)
        calc_btn.grid(row=0, column=0, padx=20, pady=20)
        
        # 记事本图标
        notepad_btn = tk.Button(icons_frame, text="📝 记事本", command=self.open_notepad,
                              font=("Arial", 12), bg="white", relief="flat",
                              width=15, height=2)
        notepad_btn.grid(row=0, column=1, padx=20, pady=20)
        
        # 日历图标
        calendar_btn = tk.Button(icons_frame, text="📅 日历", command=self.open_calendar,
                               font=("Arial", 12), bg="white", relief="flat",
                               width=15, height=2)
        calendar_btn.grid(row=0, column=2, padx=20, pady=20)
        
        # 系统信息图标
        system_btn = tk.Button(icons_frame, text="💻 系统信息", command=self.show_system_info,
                             font=("Arial", 12), bg="white", relief="flat",
                             width=15, height=2)
        system_btn.grid(row=1, column=0, padx=20, pady=20)
        
        # 时钟图标
        clock_btn = tk.Button(icons_frame, text="⏰ 时钟", command=self.open_clock,
                            font=("Arial", 12), bg="white", relief="flat",
                            width=15, height=2)
        clock_btn.grid(row=1, column=1, padx=20, pady=20)
        
        # 设置图标
        settings_btn = tk.Button(icons_frame, text="⚙️ 设置", command=self.open_settings,
                               font=("Arial", 12), bg="white", relief="flat",
                               width=15, height=2)
        settings_btn.grid(row=1, column=2, padx=20, pady=20)
    
    def create_taskbar(self):
        """创建底部任务栏"""
        taskbar_frame = tk.Frame(self.root, height=50, bg="#34495e")
        taskbar_frame.pack(side="bottom", fill="x")
        
        # 开始按钮
        start_btn = tk.Button(taskbar_frame, text="开始", command=self.start_menu,
                            bg="#3498db", fg="white", font=("Arial", 10),
                            relief="flat", padx=20)
        start_btn.pack(side="left", padx=10, pady=5)
        
        # 退出按钮
        exit_btn = tk.Button(taskbar_frame, text="退出", command=self.exit_program,
                           bg="#e74c3c", fg="white", font=("Arial", 10),
                           relief="flat", padx=20)
        exit_btn.pack(side="right", padx=10, pady=5)
    
    def open_calculator(self):
        """打开计算器"""
        calc_window = tk.Toplevel(self.root)
        calc_window.title("计算器")
        calc_window.geometry("300x400")
        
        # 创建计算器界面
        calc_display_var = tk.StringVar()
        calc_display_var.set("0")
        
        display = tk.Entry(calc_window, textvariable=calc_display_var, 
                          font=("Arial", 20), justify="right", state="readonly")
        display.pack(fill="x", padx=10, pady=10)
        
        # 计算器逻辑
        expression = ""
        
        def press_key(key):
            nonlocal expression
            if key == "C":
                expression = ""
                calc_display_var.set("0")
            elif key == "=":
                try:
                    result = str(eval(expression))
                    calc_display_var.set(result)
                    expression = result
                except Exception:
                    messagebox.showerror("错误", "无效的表达式")
                    expression = ""
                    calc_display_var.set("0")
            else:
                if calc_display_var.get() == "0" and key.isdigit():
                    expression = key
                else:
                    expression += str(key)
                calc_display_var.set(expression)
        
        # 按钮布局
        button_frame = tk.Frame(calc_window)
        button_frame.pack(padx=10, pady=10)
        
        buttons = [
            ('C', 0, 0), ('(', 0, 1), (')', 0, 2), ('/', 0, 3),
            ('7', 1, 0), ('8', 1, 1), ('9', 1, 2), ('*', 1, 3),
            ('4', 2, 0), ('5', 2, 1), ('6', 2, 2), ('-', 2, 3),
            ('1', 3, 0), ('2', 3, 1), ('3', 3, 2), ('+', 3, 3),
            ('0', 4, 0, 2), ('.', 4, 2), ('=', 4, 3)
        ]
        
        for btn_info in buttons:
            if len(btn_info) == 4:  # 跨两列
                text, row, col, colspan = btn_info
                btn = tk.Button(button_frame, text=text, font=("Arial", 16),
                               width=6, height=2, command=lambda t=text: press_key(t))
                btn.grid(row=row, column=col, columnspan=colspan, padx=2, pady=2, sticky="ew")
            else:
                text, row, col = btn_info
                btn = tk.Button(button_frame, text=text, font=("Arial", 16),
                               width=6, height=2, command=lambda t=text: press_key(t))
                btn.grid(row=row, column=col, padx=2, pady=2)
        
        for i in range(4):
            button_frame.grid_columnconfigure(i, weight=1)
    
    def open_notepad(self):
        """打开记事本"""
        notepad_window = tk.Toplevel(self.root)
        notepad_window.title("记事本")
        notepad_window.geometry("600x400")
        
        # 创建文本编辑区域
        text_area = scrolledtext.ScrolledText(notepad_window, wrap=tk.WORD, 
                                            font=("Arial", 12))
        text_area.pack(expand=True, fill="both", padx=10, pady=10)
        
        # 工具栏
        toolbar = tk.Frame(notepad_window)
        toolbar.pack(fill="x", padx=10, pady=5)
        
        def save_text():
            content = text_area.get("1.0", tk.END)
            try:
                with open("notepad_save.txt", "w", encoding="utf-8") as f:
                    f.write(content)
                messagebox.showinfo("保存", "已保存到 notepad_save.txt")
            except Exception as e:
                messagebox.showerror("错误", f"保存失败: {str(e)}")
        
        def clear_text():
            text_area.delete("1.0", tk.END)
        
        save_btn = tk.Button(toolbar, text="保存", command=save_text, width=10)
        save_btn.pack(side="left", padx=5)
        
        clear_btn = tk.Button(toolbar, text="清空", command=clear_text, width=10)
        clear_btn.pack(side="left", padx=5)
        
        # 加载已保存的内容
        try:
            if os.path.exists("notepad_save.txt"):
                with open("notepad_save.txt", "r", encoding="utf-8") as f:
                    text_area.insert("1.0", f.read())
        except:
            pass
    
    def open_calendar(self):
        """打开日历"""
        calendar_window = tk.Toplevel(self.root)
        calendar_window.title("日历")
        calendar_window.geometry("400x350")
        
        now = datetime.now()
        year = now.year
        month = now.month
        
        def show_calendar(y, m):
            # 清除旧日历
            for widget in cal_frame.winfo_children():
                widget.destroy()
            
            # 显示年月
            month_label = tk.Label(cal_frame, text=f"{y}年 {m}月", 
                                  font=("Arial", 16, "bold"))
            month_label.grid(row=0, column=0, columnspan=7, pady=10)
            
            # 星期标题
            days = ["一", "二", "三", "四", "五", "六", "日"]
            for i, day in enumerate(days):
                day_label = tk.Label(cal_frame, text=day, font=("Arial", 10, "bold"))
                day_label.grid(row=1, column=i, padx=2, pady=2)
            
            # 获取日历
            cal = calendar.monthcalendar(y, m)
            today = now.day if y == now.year and m == now.month else 0
            
            # 显示日期
            for week_num, week in enumerate(cal, start=2):
                for day_num, day in enumerate(week):
                    if day != 0:
                        bg_color = "yellow" if day == today else "white"
                        day_btn = tk.Label(cal_frame, text=str(day), 
                                         width=4, height=2, bg=bg_color,
                                         relief="ridge")
                        day_btn.grid(row=week_num, column=day_num, padx=2, pady=2)
        
        # 导航栏
        nav_frame = tk.Frame(calendar_window)
        nav_frame.pack(fill="x", padx=10, pady=5)
        
        def prev_month():
            nonlocal year, month
            if month == 1:
                month = 12
                year -= 1
            else:
                month -= 1
            show_calendar(year, month)
        
        def next_month():
            nonlocal year, month
            if month == 12:
                month = 1
                year += 1
            else:
                month += 1
            show_calendar(year, month)
        
        prev_btn = tk.Button(nav_frame, text="← 上月", command=prev_month)
        prev_btn.pack(side="left", padx=5)
        
        next_btn = tk.Button(nav_frame, text="下月 →", command=next_month)
        next_btn.pack(side="right", padx=5)
        
        # 日历主区域
        cal_frame = tk.Frame(calendar_window)
        cal_frame.pack(padx=10, pady=10)
        
        show_calendar(year, month)
    
    def show_system_info(self):
        """显示系统信息"""
        info_window = tk.Toplevel(self.root)
        info_window.title("系统信息")
        info_window.geometry("400x300")
        
        info_text = f"""个人计算机 v1.0
当前时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
功能模块:
✓ 桌面界面
✓ 计算器
✓ 记事本
✓ 日历
✓ 时钟
✓ 设置

使用说明:
点击桌面图标打开对应功能
使用任务栏按钮进行导航
"""
        
        text_widget = scrolledtext.ScrolledText(info_window, wrap=tk.WORD, 
                                               font=("Arial", 12), height=15)
        text_widget.pack(expand=True, fill="both", padx=10, pady=10)
        text_widget.insert("1.0", info_text)
        text_widget.config(state="disabled")
    
    def open_clock(self):
        """打开时钟"""
        clock_window = tk.Toplevel(self.root)
        clock_window.title("时钟")
        clock_window.geometry("300x200")
        
        time_label = tk.Label(clock_window, font=("Arial", 24, "bold"), fg="#2c3e50")
        time_label.pack(expand=True, fill="both", padx=20, pady=20)
        
        date_label = tk.Label(clock_window, font=("Arial", 16), fg="#7f8c8d")
        date_label.pack(pady=10)
        
        def update_clock():
            now = datetime.now()
            time_label.config(text=now.strftime("%H:%M:%S"))
            date_label.config(text=now.strftime("%Y年%m月%d日 星期%w").replace("星期0", "星期日"))
            clock_window.after(1000, update_clock)
        
        update_clock()
    
    def open_settings(self):
        """打开设置"""
        settings_window = tk.Toplevel(self.root)
        settings_window.title("设置")
        settings_window.geometry("400x300")
        
        # 主题设置
        theme_frame = tk.LabelFrame(settings_window, text="主题设置", padx=10, pady=10)
        theme_frame.pack(fill="x", padx=20, pady=10)
        
        theme_var = tk.StringVar(value="light")
        
        def change_theme():
            theme = theme_var.get()
            if theme == "light":
                self.root.configure(bg="#f0f0f0")
            elif theme == "dark":
                self.root.configure(bg="#2c3e50")
        
        tk.Radiobutton(theme_frame, text="浅色主题", variable=theme_var, 
                      value="light", command=change_theme).pack(anchor="w")
        tk.Radiobutton(theme_frame, text="深色主题", variable=theme_var, 
                      value="dark", command=change_theme).pack(anchor="w")
        
        # 关于
        about_frame = tk.LabelFrame(settings_window, text="关于", padx=10, pady=10)
        about_frame.pack(fill="x", padx=20, pady=10)
        
        about_label = tk.Label(about_frame, 
                              text="个人计算机 v1.0\n一个简单的桌面模拟程序\n创建日期: 2026年",
                              justify="left")
        about_label.pack(anchor="w")
    
    def start_menu(self):
        """开始菜单"""
        start_menu = tk.Menu(self.root, tearoff=0)
        start_menu.add_command(label="计算器", command=self.open_calculator)
        start_menu.add_command(label="记事本", command=self.open_notepad)
        start_menu.add_command(label="日历", command=self.open_calendar)
        start_menu.add_separator()
        start_menu.add_command(label="退出", command=self.exit_program)
        
        # 显示菜单
        start_menu.tk_popup(10, self.root.winfo_height() - 50)
    
    def exit_program(self):
        """退出程序"""
        if messagebox.askyesno("退出", "确定要退出程序吗？"):
            self.root.quit()
    
    def run(self):
        """运行主循环"""
        self.root.mainloop()

# 保存为文件
with open("desktop_computer.py", "w", encoding="utf-8") as f:
    f.write('''
import tkinter as tk
from tkinter import ttk, messagebox, scrolledtext
from datetime import datetime, timedelta
import calendar
import os

class DesktopComputer:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("个人计算机桌面")
        self.root.geometry("800x600")
        self.root.configure(bg="#f0f0f0")
        
        self.create_status_bar()
        self.create_main_area()
        self.create_desktop_icons()
        self.create_taskbar()
    
    def create_status_bar(self):
        status_frame = tk.Frame(self.root, height=30, bg="#2c3e50")
        status_frame.pack(fill="x")
        
        self.time_label = tk.Label(status_frame, font=("Arial", 10), bg="#2c3e50", fg="white")
        self.time_label.pack(side="right", padx=10)
        
        self.date_label = tk.Label(status_frame, text=self.get_current_date(), 
                                   font=("Arial", 10), bg="#2c3e50", fg="white")
        self.date_label.pack(side="left", padx=10)
        
        self.update_time()
    
    def get_current_date(self):
        now = datetime.now()
        return now.strftime("%Y年%m月%d日")
    
    def update_time(self):
        current_time = datetime.now().strftime("%H:%M:%S")
        self.time_label.config(text=current_time)
        self.root.after(1000, self.update_time)
    
    def create_main_area(self):
        main_frame = tk.Frame(self.root, bg="#f0f0f0")
        main_frame.pack(expand=True, fill="both", padx=20, pady=20)
        
        welcome_label = tk.Label(main_frame, text="欢迎使用个人计算机", 
                                 font=("Arial", 20, "bold"), bg="#f0f0f0", fg="#2c3e50")
        welcome_label.pack(pady=20)
    
    def create_desktop_icons(self):
        icons_frame = tk.Frame(self.root, bg="#f0f0f0")
        icons_frame.pack(fill="both", expand=True, padx=20)
        
        icons = [
            ("🧮 计算器", self.open_calculator, 0, 0),
            ("📝 记事本", self.open_notepad, 0, 1),
            ("📅 日历", self.open_calendar, 0, 2),
            ("💻 系统信息", self.show_system_info, 1, 0),
            ("⏰ 时钟", self.open_clock, 1, 1),
            ("⚙️ 设置", self.open_settings, 1, 2)
        ]
        
        for text, command, row, col in icons:
            btn = tk.Button(icons_frame, text=text, command=command,
                           font=("Arial", 12), bg="white", relief="flat", 
                           width=15, height=2)
            btn.grid(row=row, column=col, padx=20, pady=20)
    
    def create_taskbar(self):
        taskbar_frame = tk.Frame(self.root, height=50, bg="#34495e")
        taskbar_frame.pack(side="bottom", fill="x")
        
        start_btn = tk.Button(taskbar_frame, text="开始", command=self.start_menu,
                            bg="#3498db", fg="white", font=("Arial", 10),
                            relief="flat", padx=20)
        start_btn.pack(side="left", padx=10, pady=5)
        
        exit_btn = tk.Button(taskbar_frame, text="退出", command=self.exit_program,
                           bg="#e74c3c", fg="white", font=("Arial", 10),
                           relief="flat", padx=20)
        exit_btn.pack(side="right", padx=10, pady=5)
    
    def open_calculator(self):
        calc_window = tk.Toplevel(self.root)
        calc_window.title("计算器")
        calc_window.geometry("300x400")
        
        calc_display_var = tk.StringVar()
        calc_display_var.set("0")
        
        display = tk.Entry(calc_window, textvariable=calc_display_var, 
                          font=("Arial", 20), justify="right", state="readonly")
        display.pack(fill="x", padx=10, pady=10)
        
        expression = ""
        
        def press_key(key):
            nonlocal expression
            if key == "C":
                expression = ""
                calc_display_var.set("0")
            elif key == "=":
                try:
                    result = str(eval(expression))
                    calc_display_var.set(result)
                    expression = result
                except Exception:
                    messagebox.showerror("错误", "无效的表达式")
                    expression = ""
                    calc_display_var.set("0")
            else:
                if calc_display_var.get() == "0" and key.isdigit():
                    expression = key
                else:
                    expression += str(key)
                calc_display_var.set(expression)
        
        button_frame = tk.Frame(calc_window)
        button_frame.pack(padx=10, pady=10)
        
        buttons = [
            ('C', 0, 0), ('(', 0, 1), (')', 0, 2), ('/', 0, 3),
            ('7', 1, 0), ('8', 1, 1), ('9', 1, 2), ('*', 1, 3),
            ('4', 2, 0), ('5', 2, 1), ('6', 2, 2), ('-', 2, 3),
            ('1', 3, 0), ('2', 3, 1), ('3', 3, 2), ('+', 3, 3),
            ('0', 4, 0, 2), ('.', 4, 2), ('=', 4, 3)
        ]
        
        for btn_info in buttons:
            if len(btn_info) == 4:
                text, row, col, colspan = btn_info
                btn = tk.Button(button_frame, text=text, font=("Arial", 16),
                               width=6, height=2, command=lambda t=text: press_key(t))
                btn.grid(row=row, column=col, columnspan=colspan, padx=2, pady=2, sticky="ew")
            else:
                text, row, col = btn_info
                btn = tk.Button(button_frame, text=text, font=("Arial", 16),
                               width=6, height=2, command=lambda t=text: press_key(t))
                btn.grid(row=row, column=col, padx=2, pady=2)
        
        for i in range(4):
            button_frame.grid_columnconfigure(i, weight=1)
    
    def open_notepad(self):
        notepad_window = tk.Toplevel(self.root)
        notepad_window.title("记事本")
        notepad_window.geometry("600x400")
        
        text_area = scrolledtext.ScrolledText(notepad_window, wrap=tk.WORD, 
                                            font=("Arial", 12))
        text_area.pack(expand=True, fill="both", padx=10, pady=10)
        
        toolbar = tk.Frame(notepad_window)
        toolbar.pack(fill="x", padx=10, pady=5)
        
        def save_text():
            content = text_area.get("1.0", tk.END)
            try:
                with open("notepad_save.txt", "w", encoding="utf-8") as f:
                    f.write(content)
                messagebox.showinfo("保存", "已保存到 notepad_save.txt")
            except Exception as e:
                messagebox.showerror("错误", f"保存失败: {str(e)}")
        
        def clear_text():
            text_area.delete("1.0", tk.END)
        
        tk.Button(toolbar, text="保存", command=save_text, width=10).pack(side="left", padx=5)
        tk.Button(toolbar, text="清空", command=clear_text, width=10).pack(side="left", padx=5)
        
        try:
            if os.path.exists("notepad_save.txt"):
                with open("notepad_save.txt", "r", encoding="utf-8") as f:
                    text_area.insert("1.0", f.read())
        except:
            pass
    
    def open_calendar(self):
        calendar_window = tk.Toplevel(self.root)
        calendar_window.title("日历")
        calendar_window.geometry("400x350")
        
        now = datetime.now()
        year = now.year
        month = now.month
        
        def show_calendar(y, m):
            for widget in cal_frame.winfo_children():
                widget.destroy()
            
            tk.Label(cal_frame, text=f"{y}年 {m}月", 
                    font=("Arial", 16, "bold")).grid(row=0, column=0, columnspan=7, pady=10)
            
            days = ["一", "二", "三", "四", "五", "六", "日"]
            for i, day in enumerate(days):
                tk.Label(cal_frame, text=day, font=("Arial", 10, "bold")).grid(row=1, column=i, padx=2, pady=2)
            
            cal = calendar.monthcalendar(y, m)
            today = now.day if y == now.year and m == now.month else 0
            
            for week_num, week in enumerate(cal, start=2):
                for day_num, day in enumerate(week):
                    if day != 0:
                        bg_color = "yellow" if day == today else "white"
                        tk.Label(cal_frame, text=str(day), 
                                width=4, height=2, bg=bg_color,
                                relief="ridge").grid(row=week_num, column=day_num, padx=2, pady=2)
        
        nav_frame = tk.Frame(calendar_window)
        nav_frame.pack(fill="x", padx=10, pady=5)
        
        def prev_month():
            nonlocal year, month
            if month == 1:
                month = 12
                year -= 1
            else:
                month -= 1
            show_calendar(year, month)
        
        def next_month():
            nonlocal year, month
            if month == 12:
                month = 1
                year += 1
            else:
                month += 1
            show_calendar(year, month)
        
        tk.Button(nav_frame, text="← 上月", command=prev_month).pack(side="left", padx=5)
        tk.Button(nav_frame, text="下月 →", command=next_month).pack(side="right", padx=5)
        
        cal_frame = tk.Frame(calendar_window)
        cal_frame.pack(padx=10, pady=10)
        show_calendar(year, month)
    
    def show_system_info(self):
        info_window = tk.Toplevel(self.root)
        info_window.title("系统信息")
        info_window.geometry("400x300")
        
        info_text = f"""个人计算机 v1.0
当前时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
功能模块:
✓ 桌面界面
✓ 计算器
✓ 记事本
✓ 日历
✓ 时钟
✓ 设置

使用说明:
点击桌面图标打开对应功能
使用任务栏按钮进行导航
"""
        
        text_widget = scrolledtext.ScrolledText(info_window, wrap=tk.WORD, 
                                               font=("Arial", 12), height=15)
        text_widget.pack(expand=True, fill="both", padx=10, pady=10)
        text_widget.insert("1.0", info_text)
        text_widget.config(state="disabled")
    
    def open_clock(self):
        clock_window = tk.Toplevel(self.root)
        clock_window.title("时钟")
        clock_window.geometry("300x200")
        
        time_label = tk.Label(clock_window, font=("Arial", 24, "bold"), fg="#2c3e50")
        time_label.pack(expand=True, fill="both", padx=20, pady=20)
        
        date_label = tk.Label(clock_window, font=("Arial", 16), fg="#7f8c8d")
        date_label.pack(pady=10)
        
        def update_clock():
            now = datetime.now()
            time_label.config(text=now.strftime("%H:%M:%S"))
            date_label.config(text=now.strftime("%Y年%m月%d日 星期%w").replace("星期0", "星期日"))
            clock_window.after(1000, update_clock)
        
        update_clock()
    
    def open_settings(self):
        settings_window = tk.Toplevel(self.root)
        settings_window.title("设置")
        settings_window.geometry("400x300")
        
        theme_frame = tk.LabelFrame(settings_window, text="主题设置", padx=10, pady=10)
        theme_frame.pack(fill="x", padx=20, pady=10)
        
        theme_var = tk.StringVar(value="light")
        
        def change_theme():
            theme = theme_var.get()
            if theme == "light":
                self.root.configure(bg="#f0f0f0")
            elif theme == "dark":
                self.root.configure(bg="#2c3e50")
        
        tk.Radiobutton(theme_frame, text="浅色主题", variable=theme_var, 
                      value="light", command=change_theme).pack(anchor="w")
        tk.Radiobutton(theme_frame, text="深色主题", variable=theme_var, 
                      value="dark", command=change_theme).pack(anchor="w")
        
        about_frame = tk.LabelFrame(settings_window, text="关于", padx=10, pady=10)
        about_frame.pack(fill="x", padx=20, pady=10)
        
        tk.Label(about_frame, 
                text="个人计算机 v1.0\\n一个简单的桌面模拟程序\\n创建日期: 2026年",
                justify="left").pack(anchor="w")
    
    def start_menu(self):
        start_menu = tk.Menu(self.root, tearoff=0)
        start_menu.add_command(label="计算器", command=self.open_calculator)
        start_menu.add_command(label="记事本", command=self.open_notepad)
        start_menu.add_command(label="日历", command=self.open_calendar)
        start_menu.add_separator()
        start_menu.add_command(label="退出", command=self.exit_program)
        start_menu.tk_popup(10, self.root.winfo_height() - 50)
    
    def exit_program(self):
        if messagebox.askyesno("退出", "确定要退出程序吗？"):
            self.root.quit()
    
    def run(self):
        self.root.mainloop()

if __name__ == "__main__":
    app = DesktopComputer()
    app.run()
''')

print("已创建桌面计算机程序：desktop_computer.py")

# 尝试运行程序
try:
    app = DesktopComputer()
    app.run()
except Exception as e:
    print("程序已保存到文件，请在本地运行以查看图形界面。")
    print(f"错误信息: {str(e)}")