Seite 1 von 1

Python-Properties für pygtk-Widgets

Verfasst: Mittwoch 17. September 2008, 15:57
von fred.reichbier
Hallo,

eigentlich wollte ich nur mal Metaklassen ausprobieren ;) Hab mich mal drangesetzt, Klassen in pygtk 'richtige' properties zu verpassen, d.h. button.label = "..." statt button.set_label("...").

Das hier ist dabei rausgekommen, ein Beispiel ist dabei.

Code: Alles auswählen

from gobject._gobject import _install_metaclass
_install_metaclass(GtkMeta)
ist dabei das Wichtigste; das sorgt dafür, dass die Metaklasse auch von gobject benutzt wird (Normale Python-Metaklassen wollen mit gobject irgendwie nicht). Damit das funktioniert, muss man allerdings anscheinend erstmal eine von der gtk-Klasse abgeleitete Klasse erstellen und diese benutzen. Es scheint auch wichtig zu sein, dass gtk erst nach obigem Aufruf importiert wird.

Alle Properties funktionieren leider nicht, weil einige set_*-Funktionen mehr als einen Parameter erwarten :/

Vielleicht kanns ja jemand brauchen. Über Kommentare zum Code würd ich mich auch freuen :D

Gruß Fred

Verfasst: Mittwoch 17. September 2008, 21:08
von Trundle
Nicht alles, was mit ``set_`` beginnt, ist automatisch ein Gtk-Property. Und so gesehen haben Gtk-Propertys (AFAIK) nur einen Wert. Bei einem Fenster gibt es beispielsweise ``default_size`` nicht als Gtk-Property, sondern nur ``default_width`` und ``default_height``. Wenn man also wirklich nur Gtk-Propertys als "echte" Propertys umsetzen mag, kann man auf das ``props``-Attribut eines Gtk-Objekts zurückgreifen, wordurch die Metaklasse wesentlich kürzer würde (siehe hier).

Verfasst: Donnerstag 18. September 2008, 12:49
von fred.reichbier
Ah, danke, das ist natürlich viel schöner ;)