J'écris une application Python basée sur des onglets, et je ne veux pas qu'elle ait de boîtes de dialogue contextuelles supplémentaires.
Je souhaite utiliser le Gtk.AboutDialog
fonctionnalité, mais je ne veux pas qu'elle apparaisse dans une fenêtre séparée. J'aimerais plutôt qu'il soit intégré dans l'un des onglets de mon Gtk.Notebook
(que j'ai créé avec Glade).
Je n'ai trouvé aucun moyen évident de le faire. Quelqu'un a-t-il des conseils ?
Réponse acceptée :
Vous pouvez déplacer la zone de contenu (GtkVBox
) de GtkDialog
vers un autre GtkContainer
, puis ajoutez à GtkNotebook
– en utilisant gtk.Widget.reparent() méthode.
about = Gtk.AboutDialog()
about.set_program_name ("Application")
about.set_copyright ("Author")
box = Gtk.VBox ()
about.vbox.reparent (box)
notebook.append_page (box, Gtk.Label("About"))
about.destroy ()
Avec l'interface créée dans Glade, vous devez faire une astuce simple pour cette solution. Créer un onglet "À propos" dans le bloc-notes avec GtkBox
ajouté (avec id par exemple "about_box"). Ensuite, vous pouvez faire quelque chose comme ceci :
box = builder.get_object ("about_box")
about.vbox.reparent (box)
Pour certaines raisons, GtkAboutDialog
de Glade zone de contenu contient aussi GtkButtonBox
. Si vous n'avez pas besoin de ces boutons, détruisez-les simplement :
about.action_area.destroy()
Si vous voulez uniquement le bouton "Crédits", sans le bouton "Fermer", faites quelque chose comme ceci :
close_button = about.get_widget_for_response(Gtk.ResponseType.CANCEL)
close_button.destroy()