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

默认窗口位置严格居中(水平+垂直扣除任务栏)

优化v4.0.16

需求描述

软件每次启动时需要从最后一次关闭时的位置启动;默认启动位置需要在1920×1080分辨率下严格居中——左右居中(软件最左侧与最右侧距屏幕边缘像素相等)、上下居中(减去任务栏高度后,距屏幕最上面与最下面距离相等)。

根因分析

v4.0.9的默认位置计算存在两个问题:

  1. 垂直居中偏差sh = sh_full - taskbar_h - safe_margin 多扣了20px安全间距,且y计算 y = (sh - win_h) // 2 + safe_margin // 2 加了10px偏移,导致窗口整体偏下10px,不严格垂直居中
  2. 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

技术要点

  1. 严格水平居中公式x = (sw - win_w) // 2
    • 1920×1080下:x = (1920-900)//2 = 510,窗口左510px右510px,严格相等
  2. 严格垂直居中公式y = (sh - win_h) // 2,其中 sh = sh_full - taskbar_h
    • 1920×1080下:sh = 1080-48 = 1032,y = (1032-800)//2 = 116,窗口上116px下116px,严格相等
  3. 任务栏高度48px:Windows任务栏通常占40~48px,保守按48px扣除。垂直居中基于扣除任务栏后的可用工作区,确保窗口不被任务栏遮挡且上下对称
  4. 优先恢复上次位置:启动时先检查 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 ✓

下一阶段规划