跳转至

版本 0.2.0:可切换的渲染引擎

这一版把绘制后端接到了底层的 tkdeft.engines 上, 并修掉一批长期存在的真实缺陷。

新增

  • 可切换的渲染引擎:tksvg(默认)/ wand / skia / pillow / cairo
import tkflu

tkflu.set_renderer("skia")     # 或 set_renderer(2)
tkflu.get_renderer_name()      # -> "skia"
  • FluLabel 宽度自适应:不传 width 时按文本自动撑开(只增不减), 中文长文本不会再被左右裁掉
  • 按规格缓存的图片缓存:同尺寸同配色的一组控件共用同一张 PhotoImage

修复

问题 影响
临时文件 / 文件描述符泄漏(旧实现每绘制一帧 mkstemp()) 长跑程序句柄耗尽
PhotoImage 被 GC 导致画布 item 变空白 同一画布多张图片时除最后一张外全部消失
下边框和右边框被裁(描边中心线压在画布边界上) 按钮看起来只有上/左边框
菜单按钮挤成一团(len(label) * 8 对中文严重偏窄) "文件" 只算出 16px
菜单项被垂直压扁、底部按钮几乎不可见 布局按实测重新调整
FluEntry / FluText 的内嵌控件挂到默认根窗口 多窗口场景嵌不进去、销毁后不回收
关窗后刷 invalid command name ...,甚至 root.destroy() 失败 after 回调统一由 tkflu/_after.py 回收

性能

栅格引擎配合规格缓存后(本机 120×32 圆角矩形实测):

场景 默认 tksvg skia 提升
按钮重绘 4.70 ms 0.076 ms ≈62×
按钮 hover 往返 7.10 ms 0.16 ms ≈46×
20 个按钮批量重绘 129.8 ms 2.22 ms ≈59×

复现:python benchmarks/run_all.py(在 tkdeft 仓库里)。

文档