飞书多维表同步工具2026-07-09v4.0.16
默认窗口位置严格居中(水平+垂直扣除任务栏)
优化v4.0.16
需求描述
软件每次启动时需要从最后一次关闭时的位置启动;默认启动位置需要在1920×1080分辨率下严格居中——左右居中(软件最左侧与最右侧距屏幕边缘像素相等)、上下居中(减去任务栏高度后,距屏幕最上面与最下面距离相等)。
根因分析
v4.0.9的默认位置计算存在两个问题:
- 垂直居中偏差:
sh = sh_full - taskbar_h - safe_margin多扣了20px安全间距,且y计算y = (sh - win_h) // 2 + safe_margin // 2加了10px偏移,导致窗口整体偏下10px,不严格垂直居中 - safe_margin冗余:安全间距概念导致窗口位置非严格居中,用户要求"距上下距离相等",应直接基于
sh_full - taskbar_h工作区居中,不再额外预留间距
改动文件清单
| 文件 | 改动内容 |
|---|---|
gui_sync.py | 默认窗口位置计算改为严格居中:删除 safe_margin=20 冗余间距;sh = sh_full - taskbar_h(仅扣任务栏48px);y = (sh - win_h) // 2(无偏移);_recalibrate 中底部超出校准也移除safe_margin |
gui_sync.py | 版本号 4.0.15→4.0.16 |
技术要点
- 严格水平居中公式:
x = (sw - win_w) // 2- 1920×1080下:x = (1920-900)//2 = 510,窗口左510px右510px,严格相等
- 严格垂直居中公式:
y = (sh - win_h) // 2,其中sh = sh_full - taskbar_h- 1920×1080下:sh = 1080-48 = 1032,y = (1032-800)//2 = 116,窗口上116px下116px,严格相等
- 任务栏高度48px:Windows任务栏通常占40~48px,保守按48px扣除。垂直居中基于扣除任务栏后的可用工作区,确保窗口不被任务栏遮挡且上下对称
- 优先恢复上次位置:启动时先检查
get_window_geometry("main_window"),有保存值则恢复,无保存值才用默认居中位置。退出时_on_closing调用save_window_geometry持久化到config/ui_layout.json
验证结果
- 语法检查:
gui_sync.py通过py_compile - 居中计算验证(1920×1080):
- 水平:x=(1920-900)//2=510,左右各510px ✓
- 垂直:sh=1080-48=1032,y=(1032-800)//2=116,上下各116px ✓
下一阶段规划
- 无