飞书多维表同步工具2026-07-09v4.0.12
列宽总和贴近容器边缘+授权按钮改名
优化v4.0.12
需求描述
- 每个板块每列的默认列宽总和需贴近容器边缘,不能留出一大片空白区域让用户拉
- 平台、类型、同步模式、运行模式、状态、报表类型、导出方式、周期等固定文字列宽度设置适当即可(基于系统内置固定文字宽度)
- 其他支持用户输入的列宽适当分配调大一些
- 最终保证每个板块所有字段列宽总和贴近容器宽度,左右两边不留空白
- 右上角"授权信息"按钮文字修改为"软件激活"
设计分析
主窗口默认宽度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.py | LAYOUT_SCHEMA_VERSION 2→3,触发旧列宽清除应用新规则 |
gui_sync.py | 版本号 4.0.11→4.0.12;"激活软件"和"授权信息"按钮文字统一改为"软件激活" |
各Tab列宽分配明细(总和均为760px)
| Tab | 固定文字列 | 用户输入列 | 用户输入占比 |
|---|---|---|---|
| sync_tasks | select=40, sync_mode=75, mode=75, status=80 (270px) | name=150, credential=140, folder=200 (490px) | 64% |
| credentials | platform=75, type=110, status=75 (260px) | name=150, account=170, table_token=180 (500px) | 66% |
| erp_tasks | select=40, report_type=100, export_method=65, cycle=65, status=75 (345px) | name=415 (415px) | 55% |
| log_center | level=55, source=85 (140px) | time=155, message=465 (620px) | 82% |
技术要点
- 固定文字列宽度计算法:中文每字≈14px(微软雅黑9pt),英文每字符≈7px,padding约12px。如"执行中"3字=42px+padding12=54px,设70px保险;"FBA补货建议"=3英文+3中文=21+42=63px+padding=75px,设100px保险
- 用户输入列承担剩余:总和目标760px减去所有固定列宽度,剩余全部分配给用户输入列。ERP任务表只有name一个用户输入列,故承担415px(55%)
- schema_version升级触发清除:LAYOUT_SCHEMA_VERSION 2→3,用户首次启动v4.0.12时自动清除旧的treeview_widths,应用新的760px分配方案
验证结果
自动化测试验证(6项全部通过):
| 测试项 | 预期结果 | 实际结果 | 状态 |
|---|---|---|---|
| 语法检查 | 6个文件通过py_compile | 全部通过 | 通过 |
| 各Tab列宽总和≈760px | 4个Tab总和760±20px | sync/cred/erp/log均为760px | 通过 |
| 固定文字列宽度适当 | 所有固定列不超过上限 | 14项全部≤上限 | 通过 |
| 用户输入列承担剩余 | 占比≥40% | 64%/66%/55%/82% | 通过 |
| schema_version=3 | LAYOUT_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