_images/pycairo.svg

Pycairo是一个为 cairo graphics library 。这要看情况了 cairo >= 1.15.10 并与 Python 3.8+PyPy3 。Pycairo,包括本文档,是按照 LGPL-2.1-only OR MPL-1.1

Pycairo绑定被设计为尽可能地与cairo C API匹配,并且仅在明显更好地以更“Pythonic”方式实现的情况下偏离。

pip install pycairo

安装Pycairo需要开罗,包括它的头。有关详细信息,请参阅“`入门<https://pycairo.readthedocs.io/en/latest/getting_started.html>`__”.


import cairo

with cairo.SVGSurface("example.svg", 200, 200) as surface:
    context = cairo.Context(surface)
    x, y, x1, y1 = 0.1, 0.5, 0.4, 0.9
    x2, y2, x3, y3 = 0.6, 0.1, 0.9, 0.5
    context.scale(200, 200)
    context.set_line_width(0.04)
    context.move_to(x, y)
    context.curve_to(x1, y1, x2, y2, x3, y3)
    context.stroke()
    context.set_source_rgba(1, 0.2, 0.2, 0.6)
    context.set_line_width(0.02)
    context.move_to(x, y)
    context.line_to(x1, y1)
    context.move_to(x2, y2)
    context.line_to(x3, y3)
    context.stroke()
https://raw.githubusercontent.com/pygobject/pycairo/main/docs/images/example.svg

皮凯罗绑定的功能:

  • 为cairo提供面向对象的接口。

  • 查询对象的错误状态并将其转换为异常。

  • 提供可供其他Python扩展使用的C API。

  • 完全类型化和文档记录的API。

欲了解更多信息,请访问https://pycairo.readthedocs.io。


PYPI:

https://pypi.org/project/pycairo

焦油球:

https://github.com/pygobject/pycairo/releases

Git回购:

https://github.com/pygobject/pycairo

Bug Tracker:

https://github.com/pygobject/pycairo/issues

邮件列表:

https://lists.cairographics.org/cgi-bin/mailman/listinfo/cairo

详情请参见“:ref:Reference_index”。

有关pycairo代码的示例,请参阅pycairo发行版附带的‘Examples’目录。


替代方案:

  • cairocffi 提供了一个很大的pycairo API子集,但它不是用C实现的,而是使用 cffi 去跟开罗谈谈。如果您不想使用C扩展,那么可以试一试。或者,如果您使用了PyPy,并且希望从CFFI比C扩展更低的开销中获益。

  • Qahirah 提供了一个更加“僵化”的API,而不太关注匹配开罗C API。它也不是C扩展,而是使用了Python内置 ctypes 与开罗对话的模块。