跳转至

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          # 等价,懒加载整个子包