Ich schreibe eine tab-basierte Python-App und möchte nicht, dass sie zusätzliche Pop-up-Dialogfelder enthält.
Ich möchte den Gtk.AboutDialog
verwenden Funktionalität, aber ich möchte nicht, dass es als separates Fenster angezeigt wird. Vielmehr möchte ich, dass es in eine der Registerkarten meines Gtk.Notebook
eingebettet wird (die ich mit Glade erstellt habe).
Ich konnte keinen offensichtlichen Weg finden, dies zu tun. Hat jemand irgendwelche Hinweise?
Akzeptierte Antwort:
Sie können den Inhaltsbereich verschieben (GtkVBox
) von GtkDialog
zu einem anderen GtkContainer
und dann an GtkNotebook
anhängen – mit gtk.Widget.reparent() Methode.
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 ()
Mit der in Glade erstellten Schnittstelle müssen Sie für diese Lösung einen einfachen Trick ausführen. Erstellen Sie die Registerkarte „Info“ im Notizbuch mit angehängter GtkBox
(mit ID zum Beispiel „about_box“). Dann können Sie so etwas tun:
box = builder.get_object ("about_box")
about.vbox.reparent (box)
Aus einigen Gründen ist Glades GtkAboutDialog
Inhaltsbereich enthält auch GtkButtonBox
. Wenn Sie diese Schaltflächen nicht benötigen, zerstören Sie sie einfach:
about.action_area.destroy()
Wenn Sie nur die Schaltfläche „Credits“ ohne die Schaltfläche „Close“ wünschen, gehen Sie so vor:
close_button = about.get_widget_for_response(Gtk.ResponseType.CANCEL)
close_button.destroy()