返回开发日志
飞书多维表同步工具2026-07-09v4.0.10

ERP窗体底色根因修复+tooltip加宽+勾选保留+启动状态重置+列宽调整

bug修复+优化v4.0.10

需求描述

  1. ERP编辑窗体右侧白色区域依旧存在,需分析根因并修复
  2. tooltip对路径类信息不能完整显示,需加大最大宽度
  3. 同步任务、ERP导出任务执行后需保持勾选状态
  4. 每次运行程序时ERP任务状态恢复"就绪"(当前仍显示上次运行的"完成"/"失败")
  5. 数据同步任务status列默认宽度与同步模式/运行模式一致,folder列默认宽度调小

根因分析

  1. 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设白色反而加剧了问题。
  2. 勾选状态丢失根因_refresh_tasks() 在删除重建Treeview item时,总是用 "☐" 初始化复选框列,导致执行中调用 _refresh_tasks() 后勾选状态被重置。
  3. ERP启动状态不重置根因:ERP的 _load_tasks() 缺少同步任务那样的状态重置逻辑(执行中/完成/失败→就绪)。

改动文件清单

文件改动内容
tabs/erp_report_tab.pydialog和Canvas的bg从"white"改为"#f5f7fa"(与ttk主题一致),彻底消除灰白不一致
utils/ui_layout.pytooltip的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

技术要点

  1. ttk主题背景色统一:ttk 'clam' 主题的背景色是 #f5f7fa,所有 tk.Canvas/tk.Toplevel 必须显式设置 bg="#f5f7fa" 才能与ttk控件背景一致。以后所有涉及Canvas/Toplevel的背景色都必须用 #f5f7fa,不能用 "white"
  2. 勾选状态保留模式_refresh_tasks() 删除item前遍历记录已勾选的item id到set,重建item时检查id是否在set中决定用"☑"还是"☐"
  3. tooltip自适应宽度wraplength = int(screen_w * 0.8),1920分辨率下约1536px,足够显示大多数路径

验证结果

  • 语法检查:4个文件全部通过 py_compile

踩坑与解决

  • v4.0.9修复方向错误:把dialog从默认改为 bg="white" 以为是统一,实际ttk主题色是 #f5f7fa 不是纯白。教训:修改背景色前必须先查ttk主题的实际背景色配置,不能想当然用"white"