发布 0.4.0:新增 tkdeft.extra 与 Material 涟漪效果
0.4.0 是纯加法:核心包一行没改,旧代码原样能跑。新增的是一个可选的子包, 以及里面第一个可以直接拿去用的效果。
tkdeft.extra
核心包继续只提供零件(画布、绘制后端、配置容器);"用零件做出来的东西"以后放
tkdeft.extra,按需加载——import tkdeft 不会顺带把 Pillow 的 ImageTk 拉起来。
from tkdeft import extra # 懒加载整个子包
from tkdeft.extra.ripple import Ripple
涟漪效果:tkdeft.extra.ripple
它不提供按钮,只提供涟漪本身,所以任何控件都能用:
from tkdeft.extra.ripple import Ripple
self.ripple = Ripple(self, on_frame=self._paint) # ① 建控制器
self.ripple.start(event.x, event.y) # ② 点击处起涟漪
self.ripple.paint(color="#000000", opacity=0.12, # ③ 在重绘里贴一层
corner_radius=8)
导出内容:
Ripple(widget, on_frame=None, *, duration=500, frame_ms=16)—— 管理状态与计时, 有start()/paint()/stop()/active/states;ripple_layer()—— 算出某一帧的 RGBA 图层(圆角裁剪 + 抗锯齿 + 半透明);ripple_alpha()/ripple_radius()/ease_out_cubic()—— 浓度、半径、缓动三条曲线。
控制器不碰 canvas item、也不存颜色:贴在哪一层、跟不跟主题换色,都由宿主决定。
不依赖 DDrawWidget 也行,任何有 create_image / winfo_width 的控件都能接。
示例与文档
examples/ripple_button.py 里有一个完整按钮作为接法参照(圆角底色、悬停 / 按压 /
焦点 / 禁用、空格触发、T 换主题),并带非交互自检:
python examples/ripple_button.py --check
新文档页 涟漪效果:给任意控件加一层扩散动画 先讲三步接上,再拆遮罩、曲线、计时与图片保活,最后是三个真实踩过的坑。
升级
无需改代码。想用新功能:
pip install -U tkdeft
0.3.x 的 API 全部保留,tkdeft.extra 只是新目录。
