Frage Erstellen eines Gtk-Fensters mit Eingabemaskenmaske in Python


Ich versuche, ein Gtk3-Fenster mit einer benutzerdefinierten Eingabemaske zu erstellen, so dass das Fenster keine Mausklicks erhalten würde. Dies ist ein Code, den ich mir ausgedacht habe:

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)

Leider ruft der Aufruf von Gdk.cairo_region_create_from_surface () mit diesem Fehler auf:

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'

Nach der Überprüfung der Datei Gdk-3.0.gir bin ich etwas verwirrt. Offensichtlich mache ich etwas falsch (oder stimmt etwas mit Introspektion nicht?). Jeder Rat wird geschätzt.


4
2018-01-23 10:12


Ursprung


Könnten Sie ein komplettes Beispiel einfügen? - xubuntix
bugs.launchpad.net/ubuntu/+source/pygobject/+bug/1028115 scheint "behoben zu sein, aber wir warten auf den Upstream" - RobotHumans


Antworten:


Leider sind einige Cairo-Objekte noch nicht inseriert:

https://mail.gnome.org/archives/python-hackers-list/2011-December/msg00004.html

Wenn Sie abenteuerlustig sind, können Sie versuchen, selbst Unterstützung hinzuzufügen. Andernfalls müssen Sie eine Problemumgehung finden.


4
2018-01-27 22:13