Píši aplikaci Python, která je založena na kartách, a nechci, aby měla další vyskakovací dialogy.
Chtěl bych použít Gtk.AboutDialog
funkce, ale nechci, aby se zobrazovala jako samostatné okno. Spíše bych chtěl, aby to bylo vložené na jednu z karet mého Gtk.Notebook
(který jsem vytvořil s Glade).
Nenašel jsem žádný zřejmý způsob, jak to udělat. Má někdo nějaké tipy?
Přijatá odpověď:
Můžete přesunout oblast obsahu (GtkVBox
) z GtkDialog
do jiného GtkContainer
a poté připojte k GtkNotebook
– pomocí gtk.Widget.reparent() metoda.
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 ()
S rozhraním vytvořeným v Glade musíte pro toto řešení udělat jednoduchý trik. Vytvořte kartu „O aplikaci“ v poznámkovém bloku s připojeným GtkBox
(s ID například „about_box“). Pak můžete udělat něco takového:
box = builder.get_object ("about_box")
about.vbox.reparent (box)
Z některých důvodů Glade's GtkAboutDialog
oblast obsahu obsahuje také GtkButtonBox
. Pokud tato tlačítka nepotřebujete, jednoduše je zničte:
about.action_area.destroy()
Pokud chcete pouze tlačítko „Kredity“ bez tlačítka „Zavřít“, udělejte něco takového:
close_button = about.get_widget_for_response(Gtk.ResponseType.CANCEL)
close_button.destroy()