Criando uma janela Gtk com máscara de forma de entrada em python

4

Eu estou tentando criar uma janela Gtk3 com uma máscara de entrada personalizada, para que a janela não receba nenhum clique do mouse. Este é um trecho de código que eu criei:

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)

Infelizmente, a chamada para Gdk.cairo_region_create_from_surface () falha com este erro:

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'

Após inspecionar o arquivo Gdk-3.0.gir, estou um pouco confuso. Claramente estou fazendo algo errado (ou há algo errado com a introspecção?). Qualquer conselho será apreciado.

    
por BigWhale 23.01.2012 / 11:12

1 resposta

4

Infelizmente, alguns objetos do Cairo ainda não são introspectivos:

link

Se você se sentir aventureiro, pode tentar adicionar suporte por conta própria. Caso contrário, você precisa encontrar uma solução alternativa.

    
por Marcelo Hashimoto 27.01.2012 / 23:13