web-dev-qa-db-fra.com

Comment intégrer le contenu d'un GtkAboutDialog dans un widget GtkNotebook

J'écris une application Python basée sur des onglets, et je ne veux pas qu'elle contienne des boîtes de dialogue supplémentaires.

J'aimerais utiliser le Gtk.AboutDialog fonctionnalité, mais je ne veux pas qu'elle apparaisse comme une fenêtre séparée. Je souhaiterais 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 at-il des pointeurs?

7
David Planella

Vous pouvez vous déplacer zone de contenu (GtkVBox) de GtkDialog à 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éez l'onglet "À propos" dans le cahier avec GtkBox (avec l'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 également GtkButtonBox. Si vous n'avez pas besoin de ces boutons, détruisez-les simplement:

about.action_area.destroy()

Si vous ne voulez que 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()
6
Damian