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

列宽总和贴近容器边缘+授权按钮改名

优化v4.0.12

需求描述

  1. 每个板块每列的默认列宽总和需贴近容器边缘,不能留出一大片空白区域让用户拉
  2. 平台、类型、同步模式、运行模式、状态、报表类型、导出方式、周期等固定文字列宽度设置适当即可(基于系统内置固定文字宽度)
  3. 其他支持用户输入的列宽适当分配调大一些
  4. 最终保证每个板块所有字段列宽总和贴近容器宽度,左右两边不留空白
  5. 右上角"授权信息"按钮文字修改为"软件激活"

设计分析

主窗口默认宽度820~900px(minsize 780),保存的窗口geometry为855px。经测算Treeview可用宽度约760px(扣除窗口边框、Notebook padding、LabelFrame边框、滚动条、padx等)。

列宽分配原则

  • 固定文字列:按最长文字宽度+padding设定(如"执行中"3字≈42px+padding=70px),不浪费空间
  • 用户输入列:承担剩余空间(如任务名称、凭据、文件夹路径、token、日志内容等可能很长的字段)
  • 总和目标:760px(±20px误差),确保默认状态下贴合容器边缘

改动文件清单

文件改动内容
tabs/sync_tasks_tab.py列宽重新分配:sync_mode 100→75、mode 100→75、status 100→80(固定列收紧);credential 130→140(用户输入列加宽);总和760px
tabs/credentials_tab.py列宽重新分配:platform 100→75、type 100→110、status 80→75(固定列调整);name 140→150、account 140→170、table_token 150→180(用户输入列加宽);总和760px
tabs/erp_report_tab.py列宽重新分配:name 200→415(承担剩余空间)、report_type 160→100、export_method 90→65、cycle 80→65、status 80→75(固定列收紧);总和760px
tabs/log_center_tab.py列宽重新分配:time 150→155、level 60→55、source 100→85(固定列收紧);message 500→465;总和760px
utils/ui_layout.pyLAYOUT_SCHEMA_VERSION 2→3,触发旧列宽清除应用新规则
gui_sync.py版本号 4.0.11→4.0.12;"激活软件"和"授权信息"按钮文字统一改为"软件激活"

各Tab列宽分配明细(总和均为760px)

Tab固定文字列用户输入列用户输入占比
sync_tasksselect=40, sync_mode=75, mode=75, status=80 (270px)name=150, credential=140, folder=200 (490px)64%
credentialsplatform=75, type=110, status=75 (260px)name=150, account=170, table_token=180 (500px)66%
erp_tasksselect=40, report_type=100, export_method=65, cycle=65, status=75 (345px)name=415 (415px)55%
log_centerlevel=55, source=85 (140px)time=155, message=465 (620px)82%

技术要点

  1. 固定文字列宽度计算法:中文每字≈14px(微软雅黑9pt),英文每字符≈7px,padding约12px。如"执行中"3字=42px+padding12=54px,设70px保险;"FBA补货建议"=3英文+3中文=21+42=63px+padding=75px,设100px保险
  2. 用户输入列承担剩余:总和目标760px减去所有固定列宽度,剩余全部分配给用户输入列。ERP任务表只有name一个用户输入列,故承担415px(55%)
  3. schema_version升级触发清除:LAYOUT_SCHEMA_VERSION 2→3,用户首次启动v4.0.12时自动清除旧的treeview_widths,应用新的760px分配方案

验证结果

自动化测试验证(6项全部通过):

测试项预期结果实际结果状态
语法检查6个文件通过py_compile全部通过通过
各Tab列宽总和≈760px4个Tab总和760±20pxsync/cred/erp/log均为760px通过
固定文字列宽度适当所有固定列不超过上限14项全部≤上限通过
用户输入列承担剩余占比≥40%64%/66%/55%/82%通过
schema_version=3LAYOUT_SCHEMA_VERSION=3已升级通过
版本号+按钮文字4.0.12 + "软件激活"均已更新通过

踩坑与解决

  • erp_tasks name列415px是否过宽:ERP任务表6列中5列是固定短文字,唯一的长文本列是任务名称。若name设窄(如200px),总和仅545px,在760px容器下右侧留215px空白(28%),不符合"贴近边缘"要求。故让name承担415px,虽然任务名通常较短显得列偏宽,但确保无空白、视觉贴合边缘,专业感更强
  • log_center message列465px:日志内容是最主要的长文本,占82%合理。time列155px确保"2026-07-09 10:30:45"完整显示

下一阶段规划

  • 观察v4.0.12上线后各Tab在780px最小窗口和900px默认窗口下的实际显示效果
  • 若用户反馈某个固定列文字仍显示不全,微调对应min_widths