飞书多维表同步工具2026-07-09v4.0.6
UI按钮显示不全返工修复
UI优化v4.0.6
需求描述
用户反馈 v4.0.5 的 UI 按钮宽度修复仍未到位,存在三个具体问题:
- 凭据管理按钮太宽,"断开全部链接"超出默认主窗体宽度
- ERP报表导出"编辑导出任务"窗口无法完整显示"导出名称管理"按钮
- 导出名称管理弹窗"关闭"按钮被砍一半,灰色背景色与前景白色不统一
根因深度分析
| 根因 | 说明 | 教训 |
|---|---|---|
| 只见树木不见森林 | 只验证单个按钮 width 够不够文字显示,未计算所有控件横向排列的总宽度是否超过容器宽度 | UI布局必须三维度验证:单控件宽+横向总宽+纵向总高 |
| pack/grid布局理解不到位 | pack(fill=BOTH, expand=True) 的 list_frame 占据所有剩余空间,Treeview height=10 过大时 bottom_frame 被挤出可见区 | expand=True 的控件需配合合理 height,预留底部空间 |
| 控件默认背景色不统一 | tk.Canvas/tk.Toplevel 默认灰色(#d9d9d9),ttk.Frame 默认白色,未显式统一 | 所有容器控件必须显式设置 bg 一致 |
改动文件清单
| 文件 | 改动内容 |
|---|---|
tabs/credentials_tab.py | 6个按钮文字精简(测试连接→测试、全部预连接→预连接、断开全部→断开)+宽度统一(width=9~10) |
tabs/erp_report_tab.py | dimension_frame 改两行布局(行0=维度, 行1=名称+管理按钮);Canvas 设置 bg="white";管理弹窗 500→580px;Treeview height 10→7;Toplevel 设置 bg="white";Combobox width 调整(维度12, 名称28) |
gui_sync.py | 版本号 4.0.5 → 4.0.6 |
技术要点
- ttk.Button width 计算:中文2字符宽,emoji 1.5字符宽,预留10%余量
- 横向总宽度约束:dimension_frame 单行5控件=592px > Canvas内部545px,改为两行后行0=210px、行1=439px 均在515px可用宽度内
- 背景色统一:Canvas 和 Toplevel 必须显式
configure(bg="white")与 ttk 主题白色一致
验证结果
- 语法检查:3个文件全部通过
py_compile - 代码审查:所有修改项(bg="white"、width=28、height=7、520x580、版本号4.0.6)均验证存在
- 宽度计算:凭据6按钮总宽568px<740px、dimension行0=210px<515px、行1=439px<515px、弹窗组件总高392px<580px
踩坑与解决
- PowerShell 不支持
&&分隔符:改用;连接多条命令 - tkinter 无显示环境无法渲染测量:改用代码审查+手工宽度计算验证,更可靠