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?
1
A
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.