飞书多维表同步工具2026-07-09v4.0.10
ERP窗体底色根因修复+tooltip加宽+勾选保留+启动状态重置+列宽调整
bug修复+优化v4.0.10
需求描述
- ERP编辑窗体右侧白色区域依旧存在,需分析根因并修复
- tooltip对路径类信息不能完整显示,需加大最大宽度
- 同步任务、ERP导出任务执行后需保持勾选状态
- 每次运行程序时ERP任务状态恢复"就绪"(当前仍显示上次运行的"完成"/"失败")
- 数据同步任务status列默认宽度与同步模式/运行模式一致,folder列默认宽度调小
根因分析
- ERP窗体底色不统一根因:ttk主题('clam')背景色是
#f5f7fa(浅灰),而Canvas和dialog设为bg="white"(#ffffff纯白)。Canvas用pack(fill=BOTH, expand=True)填满dialog,但ttk.Frame内grid控件有固定width不填满右侧,导致Canvas白色背景透过Frame右侧空白区显示——这才是"右侧白色"的真正来源。v4.0.9只把dialog设白色反而加剧了问题。 - 勾选状态丢失根因:
_refresh_tasks()在删除重建Treeview item时,总是用"☐"初始化复选框列,导致执行中调用_refresh_tasks()后勾选状态被重置。 - ERP启动状态不重置根因:ERP的
_load_tasks()缺少同步任务那样的状态重置逻辑(执行中/完成/失败→就绪)。
改动文件清单
| 文件 | 改动内容 |
|---|---|
tabs/erp_report_tab.py | dialog和Canvas的bg从"white"改为"#f5f7fa"(与ttk主题一致),彻底消除灰白不一致 |
utils/ui_layout.py | tooltip的wraplength从固定500改为屏幕宽度80%,确保路径类长文本完整显示 |
tabs/sync_tasks_tab.py | _refresh_tasks() 增加刷新前记录已勾选item id,刷新后恢复勾选状态;folder默认列宽280→200 |
tabs/erp_report_tab.py | _refresh_tasks() 同步增加勾选状态保留逻辑;_load_tasks() 增加启动时状态重置(执行中/完成/失败→就绪) |
gui_sync.py | 版本号 4.0.9 → 4.0.10 |
技术要点
- ttk主题背景色统一:ttk 'clam' 主题的背景色是
#f5f7fa,所有 tk.Canvas/tk.Toplevel 必须显式设置bg="#f5f7fa"才能与ttk控件背景一致。以后所有涉及Canvas/Toplevel的背景色都必须用#f5f7fa,不能用"white" - 勾选状态保留模式:
_refresh_tasks()删除item前遍历记录已勾选的item id到set,重建item时检查id是否在set中决定用"☑"还是"☐" - tooltip自适应宽度:
wraplength = int(screen_w * 0.8),1920分辨率下约1536px,足够显示大多数路径
验证结果
- 语法检查:4个文件全部通过
py_compile
踩坑与解决
- v4.0.9修复方向错误:把dialog从默认改为
bg="white"以为是统一,实际ttk主题色是#f5f7fa不是纯白。教训:修改背景色前必须先查ttk主题的实际背景色配置,不能想当然用"white"