193 lines
6.2 KiB
Python
193 lines
6.2 KiB
Python
"""
|
||
样式保存问题解决指南
|
||
"""
|
||
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() |