fix: fit main window within screen on startup

This commit is contained in:
chengma
2026-07-07 12:06:17 +08:00
parent 05a85c6d6a
commit caa04a9aa7
7 changed files with 166 additions and 5 deletions
+38
View File
@@ -227,3 +227,41 @@ T-530 已实现:保存和请求前都会把 Base URL 规整为网关根,去
已修复:T-105b 已把④「启动登录」改成幂等流程。先检查该账号 `debug_port` 是否已有 CDP 响应;已响应时不再 `Popen`,而是复用现有 Chrome/CDP 并打开或激活 `https://<region_host>/portal/` 登录/卖家中心 tab;未响应时才新启动 Chrome。该修复不自动登录、不填密码、不绕过验证码,也不改变①/③预检“不自动启动 Chrome”的规则。
验证方式:同一账号第一次点击「启动登录」应显示“Chrome 已启动,请人工登录”;保持该账号 Chrome 不关闭,再点一次应显示“该账号 Chrome 已打开,已复用现有窗口”,且不会新增 Chrome 进程。
## 打包版窗口左上角显示不全,标题栏不可拖动
### 现象
在 Windows 10 虚拟机或小分辨率环境运行打包后的 `dist/cmshopee/cmshopee.exe` / release 包后,主窗口出现在屏幕左上角,左边和标题栏显示不全,看不到「蝦皮圈優化助手」标题,导致无法用鼠标拖动窗口到中间。
### 原因
旧逻辑只设置固定窗口大小:
```python
self.resize(1180, 760)
```
没有按当前屏幕可用区域限制初始尺寸、居中显示,也没有保证窗口标题栏完整落在屏幕内。虚拟机、小分辨率、高 DPI、任务栏占用较多或多显示器切换环境下更容易暴露该问题;PyInstaller 打包不是根因。
### 临时处理
如果已经遇到窗口无法拖动:
1. 按 `Alt + Space`。
2. 按 `M` 选择移动。
3. 用方向键把窗口移回屏幕中间,再按回车。
也可以尝试 `Win + 方向键` 贴靠/恢复窗口,或先调高虚拟机分辨率。
### 当前修复(T-541 后)
T-541 已在主窗口启动时读取 `QApplication.primaryScreen().availableGeometry()`:
- 大屏保持接近 `1180x760`。
- 小屏自动缩小到可用区域内。
- `resize()` 后按可用区域居中 `move()`。
- 确保窗口左上角不小于可用区域左上角,标题栏完整可见、可拖动。
- 不保存坏的历史窗口坐标,避免下次继续打开到屏幕外。
修复后需要在普通桌面和 Windows 10 虚拟机/小分辨率环境各启动一次打包版,确认标题栏完整可见。