Skip to content

TkWebUI 0.3.0

Choose a tag to compare

@bvb6417 bvb6417 released this 21 Oct 11:15
· 2 commits to main since this release

性能(#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 看起来不同。