mirror of
https://gitee.com/xmz7891/ykxmz.git
synced 2026-10-18 21:50:44 +00:00
被控端 - 修复 MTU 问题:夹 MSS + 路径 MTU 探测(公网可用率 48% -> 100%) - 复用 HTTP 连接(免掉每次新建 TLS 的 30% 握手失败) - 每分钟回头找局域网,自动切回快 400 倍的路径 - 画面心跳帧:静止时省流量,客户端仍知道流是活的 - 锁屏时给出可操作的提示 手表端 - 内置 GTS Root R4 / GlobalSign Root CA,修 SSLHandshakeException - 连接错误翻译成人话(证书/时间/解析/超时分别提示) - 经中转连上后用服务器报的地址刷新已配对记录 - 新增局域网连接页面、服务器延迟检测 服务器端 - 支持 chunked 请求体(修每 16 秒一次的连接错乱与大面积 502) - 网络调优脚本 net-tune.sh(开机自动应用) - 管理页:批量删除、网络体检、下载区 - 隧道改 HTTP/2 + 双连接 文档 - 许可协议 / 安装前必读 / 安装后须知(作者:小麦子)
65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""把重做后的设置窗口截个图,方便看效果。"""
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
import tempfile
|
|
import time
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
sys.path.insert(0, str(ROOT / "windows"))
|
|
|
|
OUT = ROOT / "_build" / "ui_preview.png"
|
|
|
|
|
|
def main() -> int:
|
|
from lanremote.config import Store
|
|
from lanremote.ui import SetupWindow
|
|
|
|
store = Store(Path(tempfile.mkdtemp(prefix="ui_shot_")))
|
|
window = SetupWindow(store)
|
|
|
|
def ready(win):
|
|
# 等界面画完
|
|
win.root.update_idletasks()
|
|
win.root.update()
|
|
time.sleep(0.6)
|
|
win.root.update()
|
|
|
|
try:
|
|
from PIL import ImageGrab
|
|
x = win.root.winfo_rootx()
|
|
y = win.root.winfo_rooty()
|
|
w = win.root.winfo_width()
|
|
h = win.root.winfo_height()
|
|
# 窗口阴影/边框留一点边
|
|
shot = ImageGrab.grab(bbox=(x - 2, y - 2, x + w + 2, y + h + 2))
|
|
shot.save(OUT)
|
|
print(f" 截图: {OUT} {shot.size[0]}x{shot.size[1]}")
|
|
except Exception as exc: # noqa: BLE001
|
|
print(f" 截图失败: {exc}")
|
|
|
|
# 顺手打印一下界面上的元素
|
|
def walk(widget, depth=0):
|
|
for child in widget.winfo_children():
|
|
text = ""
|
|
try:
|
|
text = str(child.cget("text"))
|
|
except Exception: # noqa: BLE001
|
|
pass
|
|
if text.strip():
|
|
print(" " + " " * depth + f"{child.winfo_class()}: {text[:44]}")
|
|
walk(child, depth + 1)
|
|
|
|
print(" 界面元素:")
|
|
walk(win.root)
|
|
win._cancel()
|
|
|
|
window.show(on_ready=ready)
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|