飞书多维表同步工具2026-07-09v4.0.17
窗口位置持久化全面修复+软件介绍文档
bug修复+新功能v4.0.17
需求描述
- 窗口位置持久化未完全实现:拖动窗口到不同位置并关闭后,重新打开大部分时候固定出现在中间略下位置,底部被任务栏遮挡
- 需要一份含软件界面图片的软件介绍文档,用于放到个人网站作为项目展示
根因分析(窗口位置问题)
v4.0.16的窗口位置管理存在三个问题:
- 任务栏高度假设不准确:硬编码
taskbar_h=48,但实际任务栏高度可能为40~56px不等(取决于用户设置),导致垂直居中计算偏差 _recalibrate过度干预:启动后50ms的校准逻辑会在窗口底部超出sh_full - taskbar_h时强制上移,但用了不准确的48px,导致窗口被移到错误位置- 保存时未检查窗口状态:
_on_closing直接调用self.master.geometry()保存,但若窗口处于最小化(iconic)状态,geometry返回的位置不正确;最大化(zoomed)状态下尺寸不反映用户偏好
改动文件清单
| 文件 | 改动内容 |
|---|---|
gui_sync.py | 新增 _get_work_area() 函数(Win32 API SystemParametersInfoW(SPI_GETWORKAREA) 获取真实工作区矩形,自动排除任务栏);__init__ 中用工作区替代假设的48px计算默认居中位置;恢复保存位置时验证至少50%在工作区内,否则回退默认居中;_recalibrate 简化为仅在窗口完全在工作区外时才纠正;_on_closing 保存前检查窗口状态(zoomed先恢复正常再保存,iconic不保存);版本号 4.0.16→4.0.17 |
docs/软件介绍.html | 新增:软件介绍展示页面(HTML格式,含5张界面截图、6大概述卡片、5大功能模块详解、10项技术栈、6项安全机制),用于个人网站展示 |
assets/screenshot_*.png | 新增5张软件界面截图:凭据管理、数据同步任务、ERP报表导出、任务编排、执行日志(通过自动化截图脚本捕获) |
技术要点
- Win32 API获取真实工作区:
SystemParametersInfoW(0x0030, 0, &rect, 0)返回的工作区矩形已自动排除任务栏(无论任务栏在底部/顶部/侧边),比假设48px准确得多。1920×1080下任务栏在底部时返回(0, 0, 1920, 1040),工作区高度1040px - 保存位置验证机制:恢复保存的geometry后,计算窗口与工作区的交集面积,若可见部分不足50%则判定为无效位置(可能来自多显示器切换或分辨率变更),回退到默认居中。这解决了"拖到不同位置但恢复错误"的问题
_recalibrate最小干预原则:v4.0.16的校准逻辑在窗口底部超出时强制上移,会覆盖用户拖动的位置。v4.0.17改为仅在窗口完全在工作区外(cur_x + real_w < wa_left + 20或cur_x > wa_right - 20)时才拉回居中,正常位置一律不动- 保存前状态检查:
_on_closing检查self.master.state()——zoomed状态先state('normal')+update_idletasks()恢复正常再获取geometry;iconic状态跳过保存,保留上次normal状态的保存位置 - 自动化截图方案:编写
scripts/auto_screenshot.py脚本,启动软件→Win32 API查找窗口句柄→keybd_event模拟Ctrl+Tab切换Tab→PIL.ImageGrab截图→保存到assets目录→关闭软件。5张截图全自动捕获,脚本用完即删
验证结果
- 语法检查:
gui_sync.py通过py_compile - 截图验证:5张截图全部成功生成(每张约248KB),覆盖5个Tab界面
- HTML文档验证:466行完整写入,以
</html>结尾,引用5张截图相对路径 - 居中计算验证(1920×1080,任务栏底部40px):工作区=(0,0,1920,1040),default_x=(1920-900)/2=510,default_y=(1040-800)/2=120
踩坑与解决
_on_closing中master变量名错误:首次修改时在_on_closing方法内写了master.update_idletasks(),但该方法作用域中没有master局部变量,应为self.master。立即修复- Ctrl+Tab截图顺序:Tkinter Notebook的Ctrl+Tab默认按Tab添加顺序切换,与界面显示顺序一致。截图脚本按此顺序截取5个Tab,截图文件名与Tab名称一一对应
下一阶段规划
- 观察v4.0.17在不同分辨率/多显示器/DPI缩放下的窗口位置恢复效果
- 软件介绍HTML页面可进一步美化(添加动画效果、深色模式切换等)