Gtk.Frame + Gtk.Box in eine gemeinsame Klasse wrappen

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Benutzeravatar
__LC__
User
Beiträge: 32
Registriert: Dienstag 1. März 2011, 14:08
Wohnort: 127.0.0.1
Kontaktdaten:

Freitag 23. September 2016, 19:02

[codebox=pys60 file=Unbenannt.txt][/code]Hallo zusammen.

Im Rahmen meiner ersten Ausflüge in die GUI-Programmierung mittels PyGtk möchte ich mir gern mal eure Meinung zu folgenden Code-Schnipsel einholen:

Code: Alles auswählen

class LabelledBox(Gtk.Frame):
    """
    Composition class to provide a widget similar to Gtk.Box but with an additionally labelled frame.
    This class delegates all instance attribute fetches to the embedded Gtk.Box instance.
    """
    __gproperties__ = {}
    
    def __init__(self, label, **kargs):
        Gtk.Frame.__init__(self, label=label)
        # To avoid recursive loops during instance attribute fetch
        # we add the instance attributes directly into self.__dict__
        self.__dict__['_content_box'] = Gtk.Box(**kargs)
        self.__dict__['_content_box'].set_border_width(6)
        self.add(self.__dict__['_content_box'])
    
    def __getattr__(self, attr):
        return getattr(self._content_box, attr)
    
    def __setattr__(self, attr, value):
        return setattr(self._content_box, attr, value)
    
    def do_get_property(self, prop):
        return getattr(self, prop.name)

    def do_set_property(self, prop, value):
        setattr(self, prop.name, value)
Ziel ist es, mittels der beiden Container Klassen Gtk.Frame und Gtk.Box eine Klasse zu erhalten, welche bildlich gesprochen eine Box mit Label und Rahmen darstellt. Um in davon abgeleiteten Klassen auch Properties einfach handhaben zu können, stellt diese Klasse die benötigten Methoden do_get_property() und do_set_property() bereits zur Verfügung. Aber irgendwie schleicht mich das Gefühl das müsste eigentlich besser gehen. Würde mich deshalb über die eine oder andere Anmerkung hierzu sehr freuen.

Schöne Grüße
Antworten