跳转至

发布 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 只是新目录。