J'ai un glide glui, et je veux aussi insérer un autre objet en utilisant un fichier glade.gtk.Builder() et plusieurs sauts de fichiers glade
Lorsque je le fais en tant que ci-dessous (c'est essentiellement ce que je fais) l'ensemble de l'application se bloque et le self.show() et maxi le processeur à 100%. Si je remplace la première ligne de init() avec self.builder = gtk.Builder() alors l'application fonctionne, je peux définir des widgets, par exemple: définir le contenu des entrées, définir et modifier les valeurs des comboboxes. Mais je ne peux pas répondre aux signaux, les clics sur les boutons n'appellent jamais le gestionnaire.
Dans le code réel, l'objet deux est défini comme une page dans un carnet de notes et j'ai plusieurs autres pages, le gtk.main() est dans l'objet qui possède le bloc-notes. Tout cela fonctionne comme prévu, c'est juste l'objet qui échoue.
Des indices? J'ai essayé d'appeler self.builder.connect_signals() pour chaque widget mais il ne parvient toujours pas à les remarquer.
class one(gtk.VBox):
def __init__(self, builder):
gtk.VBox.__init__(self)
self.builder = builder # if this is self.builder = gtk.Builder() app runs but widget signals go missing.
self.builder.add_from_file("ui_for_one.glade")
self.show() # Endless loop here?
class two(object): # This is the page in a notebook.
def __init__(self):
self.builder = gtk.Builder()
self.builder.add_from_file("ui_for_two.glade")
self.some_container = self.builder.get_object("some_container")
self.one = one(self.builder)
self.some_container.pack_start(self.one, False, False)
Je n'avais pas essayé self.builder.connect_signals (self) et cela a corrigé le problème. J'utilise builder depuis peu de temps (en utilisant libglade before) et n'ai pas encore appelé builder.connect_signals (self) jusqu'à maintenant. Savez-vous comment certaines choses fonctionnent sans l'appeler et d'autres pas? – Rob
Eh bien, je ne peux pas voir le reste de votre code, mais peut-être que vous avez manuellement connecté les signaux à certains widgets, mais pas le reste? –
Ignorer mon commentaire, je l'avais appelé. Dans la classe de code réel, deux classes de base l'appellent. Certains où j'ai eu l'idée dans ma tête que gtk.Builder l'a fait automagiquement. À la votre! – Rob