我正在尝试创建一个带有自定义输入掩码的 Gtk3 窗口,以便窗口不会接收任何鼠标点击。这是我想到的一段代码:
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, w , h)
surface_ctx = cairo.Context(surface)
surface_ctx.set_source_rgba(1.0, 1.0, 1.0, 0.0)
surface_ctx.set_operator(cairo.OPERATOR_SOURCE)
surface_ctx.paint()
reg = Gdk.cairo_region_create_from_surface(surface)
widget.input_shape_combine_region(reg)
不幸的是,调用 Gdk.cairo_region_create_from_surface() 失败并出现以下错误:
Traceback (most recent call last):
File "../kazam/frontend/window_region.py", line 144, in cb_draw reg = Gdk.cairo_region_create_from_surface(surface)
File "/usr/lib/python2.7/dist-packages/gi/types.py", line 43, in function return info.invoke(*args, **kwargs)
TypeError: Couldn't find conversion for foreign struct 'cairo.Region'
检查完 Gdk-3.0.gir 文件后,我有点困惑。显然我做错了什么(或者自省出了问题?)。任何建议都将不胜感激。
答案1
不幸的是,一些 Cairo 对象尚未被自省:
https://mail.gnome.org/archives/python-hackers-list/2011-December/msg00004.html
如果您喜欢冒险,可以尝试自己添加支持。否则,您需要找到一种解决方法。