diff --git a/style_save_guide.py b/style_save_guide.py new file mode 100644 index 0000000..d9966bc --- /dev/null +++ b/style_save_guide.py @@ -0,0 +1,193 @@ +""" +样式保存问题解决指南 +""" +import tkinter as tk +from tkinter import ttk, messagebox +from style_manager import style_manager + +def show_save_guide(): + """显示样式保存指南""" + guide_window = tk.Toplevel() + guide_window.title("样式保存问题解决指南") + guide_window.geometry("600x500") + guide_window.resizable(True, True) + + # 创建滚动文本区域 + text_frame = ttk.Frame(guide_window) + text_frame.pack(fill='both', expand=True, padx=10, pady=10) + + # 滚动条 + scrollbar = ttk.Scrollbar(text_frame, orient="vertical") + scrollbar.pack(side="right", fill="y") + + # 文本区域 + text_widget = tk.Text(text_frame, wrap=tk.WORD, yscrollcommand=scrollbar.set, + font=("Microsoft YaHei", 10), padx=10, pady=10) + text_widget.pack(side="left", fill="both", expand=True) + scrollbar.config(command=text_widget.yview) + + # 指南内容 + guide_content = """ +📋 样式保存问题解决指南 + +如果您遇到"保存样式失败"的错误,请按照以下步骤排查和解决: + +🔍 问题诊断 + +1. 错误信息解读: + • "不能覆盖内置样式" - 您使用了系统预设的样式名称 + • "文件权限问题" - 程序无法写入文件到磁盘 + • "样式对象结构错误" - 内部数据结构异常 + +2. 内置样式列表(不能覆盖): + • 爆款文章风格 + • 微信公众号风格 + • 知乎高赞回答风格 + • 小红书笔记风格 + • 今日头条新闻风格 + • B站UP主视频脚本风格 + • 企业微信群通知风格 + • 情感鸡汤文风格 + +✅ 解决方案 + +一、样式名称问题: + 1. 确保样式名称不为空 + 2. 不要使用上述内置样式名称 + 3. 建议使用描述性名称,如"我的自定义样式"、"公司报告样式"等 + 4. 如果要修改内置样式,请使用"另存为"功能 + +二、文件权限问题: + 1. 以管理员身份运行程序 + 2. 检查程序目录是否有写入权限 + 3. 确保磁盘空间充足 + 4. 临时关闭杀毒软件的实时保护 + +三、系统问题: + 1. 重启程序再次尝试 + 2. 检查是否有其他程序占用文件 + 3. 更新到最新版本程序 + +🛠️ 正确的操作步骤 + +保存样式: + 1. 在高级编辑器中修改样式设置 + 2. 在"基本信息"选项卡中输入样式名称 + 3. 确保名称不与内置样式重复 + 4. 点击"保存样式"按钮 + 5. 等待确认消息 + +另存为新样式: + 1. 在高级编辑器中修改样式设置 + 2. 点击"另存为"按钮 + 3. 在弹出对话框中输入新名称 + 4. 确保名称不重复 + 5. 点击确定完成保存 + +📞 获取帮助 + +如果问题仍然存在: + 1. 查看控制台输出的详细错误信息 + 2. 检查是否有特殊字符在样式名称中 + 3. 尝试使用简单的英文名称测试 + 4. 记录具体的错误步骤和错误信息 + +💡 最佳实践 + +1. 样式命名规范: + • 使用有意义的描述性名称 + • 避免特殊字符和空格 + • 建议格式:项目_用途_版本,如"报告_标准_v1" + +2. 定期备份: + • 重要样式请导出保存 + • 定期备份样式文件夹 + +3. 测试流程: + • 先用简单名称测试保存功能 + • 确认无误后再使用复杂样式 + • 修改重要样式前先备份 + +🔧 技术信息 + +样式文件位置:data/styles/ +支持的操作:创建、修改、删除、导入、导出 +文件格式:JSON格式 +编码:UTF-8 + +如果您按照此指南操作仍有问题,说明可能存在程序bug, +请联系技术支持并提供详细的错误信息。 +""" + + text_widget.insert("1.0", guide_content) + text_widget.config(state='disabled') + + # 底部按钮 + button_frame = ttk.Frame(guide_window) + button_frame.pack(fill='x', padx=10, pady=10) + + def check_current_styles(): + """检查当前样式状态""" + styles = style_manager.get_style_names() + builtin_count = len(style_manager.builtin_styles) + custom_count = len(style_manager.custom_styles) + + info = f"当前样式统计:\n\n" + info += f"内置样式:{builtin_count} 个\n" + info += f"自定义样式:{custom_count} 个\n" + info += f"总计:{len(styles)} 个\n\n" + info += "自定义样式列表:\n" + + custom_names = list(style_manager.custom_styles.keys()) + if custom_names: + for name in custom_names: + info += f" • {name}\n" + else: + info += " (暂无自定义样式)" + + messagebox.showinfo("样式状态", info) + + def test_save_permission(): + """测试保存权限""" + import os + import tempfile + + try: + styles_dir = style_manager.styles_dir + test_file = os.path.join(styles_dir, "permission_test.tmp") + + # 测试写入 + with open(test_file, 'w', encoding='utf-8') as f: + f.write("permission test") + + # 测试读取 + with open(test_file, 'r', encoding='utf-8') as f: + content = f.read() + + # 清理 + os.remove(test_file) + + messagebox.showinfo("权限测试", "✅ 文件权限正常\n\n程序可以正常读写样式文件。") + + except Exception as e: + error_msg = f"❌ 文件权限异常\n\n错误详情:{str(e)}\n\n" + error_msg += "建议解决方案:\n" + error_msg += "• 以管理员身份运行程序\n" + error_msg += "• 检查磁盘空间是否充足\n" + error_msg += "• 确认杀毒软件未阻止文件操作" + messagebox.showerror("权限测试失败", error_msg) + + ttk.Button(button_frame, text="检查当前样式", command=check_current_styles).pack(side='left', padx=5) + ttk.Button(button_frame, text="测试保存权限", command=test_save_permission).pack(side='left', padx=5) + ttk.Button(button_frame, text="关闭", command=guide_window.destroy).pack(side='right', padx=5) + +def main(): + """主函数 - 独立运行指南""" + root = tk.Tk() + root.withdraw() # 隐藏主窗口 + + show_save_guide() + root.mainloop() + +if __name__ == '__main__': + main() \ No newline at end of file