发布 0.3.0:把接口补齐、讲清楚
这一版没有新组件,做的是把 tkdeft 的对外接口补齐、并让 tkfluent 用上它们; 绘制结果与 0.2.0 逐项一致(24 个按钮状态 × 5 引擎的像素差没有变化)。
绘制引擎层
- 引擎注册表补充
available_engines()/engine_names()/engine_index()/engine_from_index()/describe_engines()/reset_engine()/unregister_engine() - 引擎基类新增
render(spec)(按规格类型自动分发)、supports(kind)、info()、index - 拼错引擎名不再静默退回慢路径,而是抛
UnknownEngineError(ValueError子类,带"你是不是想用 …"的提示) - 渲染入口新增
render(spec)与RENDERERS; 渲染失败可用last_engine_error()/clear_engine_error()查询 - 三种规格补齐
from_box()(按坐标对构造)、pixels、to_dict()、describe()、kind
画布层
DCanvas新增统一绘制入口draw_roundrect()/draw_track()/draw_thumb(): 有栅格引擎就走位图快速路径,否则自动回退 SVG,返回值一定是 item id- 新增可覆盖的 SVG 钩子
draw_roundrect_svg()/draw_track_svg()/draw_thumb_svg()与draw_svg_item()——组件不必再抄一遍回退逻辑 raster_enabled属性 /raster=False参数可以强制走 SVG(做引擎对照时很方便)
绘制后端
DSvgDraw补齐通用图元create_roundrect()/create_track()/create_thumb()create_svg_image(..., way=None)默认按当前引擎自动挑 tksvg / Wandtkdeft.svg新增svg_paint()/gradient_stop():None与"transparent"不再让 svgwrite 抛TypeError—— 以前同一份RoundRectSpec(outline=None)在 skia 上正常、换 tksvg 就崩
基础件
DObject补全dget/dhas/dkeys/dvalues/ditems/dcopy/dreset,dcget(key, default)可给默认值;实例现在拥有自己的属性字典,不再共享类级默认值- 顶层
tkdeft再导出常用名字;新增__version_info__
文档
tkfluent 同步
9 个组件里"栅格优先 + SVG 回退"的样板代码收敛到 tkdeft (button / badge / togglebutton / entry / text / listbox / frame / scrollbar / slider, 净删约 400 行)。同时修掉两个被回归漏掉的缺陷:
FluListBox.theme()用参数style判断分支 → 点"切换主题"直接崩;--check自检用except AttributeError: continue跳过"没有钩子"的组件, 把钩子内部的AttributeError一起吞了——这也是上面那个 bug 一直没被发现的原因。
升级建议
0.3.0 是纯加法:旧代码原样能跑。想顺手改的地方见 从 0.2 升级到 0.3。