tkdeft · 顶层接口
tkdeft —— 把矢量绘图变成 Tkinter 控件的底座。
本包不提供具体组件,只提供零件:
- :mod:
tkdeft.engines—— 可插拔的绘制引擎(tksvg / wand / skia / pillow / cairo) - :mod:
tkdeft.svg—— SVG 形状助手(统一的圆角矩形几何) - :mod:
tkdeft.windows——DCanvas/DDraw/DSvgDraw/DDrawWidget - :mod:
tkdeft.object——DObject配置容器 - :mod:
tkdeft.utility—— 字体等零碎工具 - :mod:
tkdeft.extra—— 可选的附加功能(目前是 Material 涟漪效果)
最常用的东西都从顶层再导出一份,所以下面两种写法等价::
from tkdeft.engines import RoundRectSpec, set_engine, render_roundrect
from tkdeft import RoundRectSpec, set_engine, render_roundrect
快速上手
::
import tkinter
from tkdeft import DCanvas, RoundRectSpec, set_engine
set_engine("skia") # 换成进程内栅格引擎(可选)
root = tkinter.Tk()
canvas = DCanvas(root, width=200, height=100)
canvas.pack()
canvas.draw_roundrect(0, 0, 120, 32, 6, fill="#ffffff", outline="#000000")
root.mainloop()
想直接要一张图片(不起窗口)::
photo = render_roundrect(
RoundRectSpec(width=120, height=32, rx=6, fill="#ffffff"),
master=canvas,
)
能力探测
旧版本没有 :mod:tkdeft.engines 子包,因此依赖方用 :data:HAS_ENGINES
做能力探测,比解析版本号更直接::
import tkdeft
if getattr(tkdeft, "HAS_ENGINES", False):
from tkdeft.engines import set_engine
附加功能
:mod:tkdeft.extra 里是可以直接拿去用的小功能,它按需加载(用到时才 import
Pillow 的 ImageTk)::
from tkdeft.extra.ripple import Ripple
from tkdeft import extra # 等价,懒加载整个子包