ウィンドウがマウスクリックを受け取らないように、カスタム入力マスクを使用して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ファイルを調べた後、やや困惑しています。明らかに、私は何か間違ったことをしています(または、内観に何か問題がありますか?)。アドバイスをいただければ幸いです。
残念ながら、一部のCairoオブジェクトはまだ内省されていません。
https://mail.gnome.org/archives/python-hackers-list/2011-December/msg00004.html
冒険心があれば、自分でサポートを追加してみてください。それ以外の場合は、回避策を見つける必要があります。