Repository navigation
TkWebUI 0.3.0
性能(#4)
Windows 11、150% 缩放,demo 全部 12 个页面,3 次取中位数:
| 0.2.0 | 0.3.0 | |
|---|---|---|
apply_theme |
0.55 s | 0.23 s |
| demo 启动到窗口就绪 | 1.05 s | 0.72 s |
| 页面首次打开(平均) | 286 ms | 209 ms |
- 圆角 / 圆形位图直接生成带透明通道的 PNG,不再拼接颜色字符串、逐像素
transparency_set;圆角贴片的四个角各一次批量写入;颜色解析带缓存。 - 字体检查直接解析目标字体,不再调用
tkfont.families()枚举全部系统字体。 - 线条图标快约 5 倍:每条笔画只计算附近的采样点,同一图标换颜色时复用。
- 以上改动生成的位图与 0.2.0 逐像素一致。
同一窗口下套用主题与不套用主题相比,主题本身的开销为:启动 +0.22 s,页面首次打开平均 +16 ms,再次打开平均 +6 ms。
修复
- 窗口显示后再构建的页面不再先窄后宽:新增
ScrollArea.prepare(width, height),先在可视区域外按最终尺寸完成布局,再显示;demo 的页面切换已改用这种方式。demo 首次显示时也不再能看到页面逐步变宽。 - 关闭菜单、浮层、日历、对话框或通知后,同一窗口上其他组件绑定的
<Configure>等处理器不再一起丢失(Python 3.13 以前unbind的问题)。 Strong.TLabel、Muted.TLabel等样式字体不再被选项数据库的*Font覆盖,加粗标题、小字说明现在按设计显示。- 菜单定位不再修改全局
ctypes.windll.user32的函数原型,避免影响宿主程序自己的 ctypes 调用。 - MenuButton / OptionMenu / 下拉按钮的箭头不再被纵向平铺成多个。
- 切换按钮、工具按钮与其他按钮同高(150% 缩放下 49 px,此前 63 px)。
- 多列表格(
configure_table)除最后一列外保持设定的列宽,多出的宽度只分给最后一列。
新增
page = ui.ScrollArea(deck)
build(page.body)
page.prepare(deck.winfo_width(), deck.winfo_height()) # 屏幕外完成布局
current.pack_forget()
page.pack(fill='both', expand=True)说明见 docs/guide.md。
升级
用新的 tkwebui 文件夹替换旧的即可,已有接口不变。由于样式字体问题已修复,加粗标题和小字说明会和 0.2.0 看起来不同。