跳转至

发布 0.2.0:可插拔的绘制引擎层

这一版把"画什么"和"用什么画"彻底分开了,并修掉一批长期存在的真实缺陷。

新东西

  • 新增 tkdeft.engines 绘制引擎层,可插拔切换 tksvg / wand / skia / pillow / cairo
  • 新增三个进程内栅格引擎(skia-python / Pillow / pycairo),完全不落盘; 其中 Pillow 引擎零额外依赖、永远可用
  • 新增按规格的图片缓存:RoundRectSpec 是不可变的,同尺寸同配色的一组控件 共用同一张 PhotoImage
  • 新增 SVG 形状助手 tkdeft.svg,统一并修正圆角矩形几何

修掉的缺陷

问题 影响
DSvgDraw.temppath() 每帧 mkstemp() 且从不关闭 fd 每绘制一帧泄漏一个句柄 + 一个残留文件
DDrawWidget.__init__ 一次性建 4 个临时文件 每个控件创建即泄漏 4 个句柄
只把图片存进 self._tkimg 同一画布上多张图片时,除最后一张外都会被 GC,画布 item 变空白
RenderManager 调用 widget.winfo_zorder() tkinter 没有这个方法,有脏控件就抛 AttributeError
svgwrite 矩形用 translate(0.5,0.5) + 整宽整高 描边中心线压在画布边界上,外侧半个线宽被裁掉

细节见常见问题与排查。

性能

栅格引擎配合规格缓存后,按钮重绘快约 39 倍、hover 往返约 52 倍 (本机 120×32 圆角矩形实测)。复现:python benchmarks/run_all.py。