2010-09-30 3 views
1

Lors de la création d'un widget personnalisé dans pygtk, de quelle classe devrait-il hériter? Je veux être capable de mettre le widget à l'intérieur d'autres widgets, mais je ne veux pas que d'autres personnes mettent des choses dans les miennes. Habituellement je fais hériter mes widgets de gtk.HBox ou gtk.VBox, et cela fonctionne bien, mais il est possible alors pour quelqu'un de faire un pack_start() sur mon widget et provoquer des choses étranges se produire. J'hériterais de gtk.Widget mais comment puis-je ajouter des choses? J'hériterais de gtk.Container ou gtk.Bin mais les docs disent qu'ils sont des classes abstraites.pygtk: De quelle classe mes widgets personnalisés devraient-ils hériter?

Répondre

0

Si votre widget personnalisé contient d'autres widgets (probablement standard), vous pouvez simplement lever une exception dans les méthodes pack_ remplacées. De cette façon, personne ne peut y mettre des choses (facilement). Dans votre classe, vous devez alors utiliser super(...).pack_xxx au lieu de self.pack_xxx. Il est probablement préférable de dériver de gtk.Container. Ensuite, vous devrez implémenter ses méthodes abstraites comme do_add(self, widget).

Si vous dessinez uniquement du contenu personnalisé (pas d'enfants), il n'est pas nécessaire de dériver d'un widget conteneur. Voir le tutorial on pygtk.org.

Questions connexes