使用gi.repository在python中使用Cairo Regions

Nik*_*hil 6 gobject introspection cairo pycairo python-3.x

我似乎无法使用gintrospection让cairo区域在内部工作.

例如

from gi.repository import cairo

 reg = cairo.Region()
Run Code Online (Sandbox Code Playgroud)

会给我的

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
MemoryError
Run Code Online (Sandbox Code Playgroud)

并试图从Gdk.get_clip_region()获得一个区域将给我

    return info.invoke(*args)
TypeError: Couldn't find conversion for foreign struct 'cairo.Region'
Run Code Online (Sandbox Code Playgroud)

我错过了什么明显的事情?我无法找到一种方法来使用它,并且无法想象你需要的区域看起来像一个简单的结构.我不知道为什么gdk找不到cairo类型,并且我不知道我是否应该以某种方式显示它.

adw*_*adw 6

显然你需要使用常规的cairo绑定,即使你对其他一切都使用内省.

所以只是import cairo.

(我不确定为什么会gi.repository.cairo存在......)

当你拥有所有必要的库时,"无法找到转换"错误就会消失(例如,在Ubuntu上python-gi-cairo,除了python-cairo(或等效的python3包)之外你还需要包).