Как встроить содержимое GtkAboutDialog в виджет GtkNotebook

Я пишу приложение на Python, основанное на вкладках, и я не хочу, чтобы у него были дополнительные всплывающие диалоги.

Я хотел бы использовать Gtk.AboutDialog функциональность, но я не хочу, чтобы это отображалось как отдельное окно. Скорее, я бы хотел, чтобы он был встроен в одну из вкладок моего Gtk.Notebook (который я создал с Glade).

Я не мог найти какой-либо очевидный способ сделать это. У кого-нибудь есть указатели?

1 ответ

Решение

Вы можете переместить область содержимого (GtkVBox) от GtkDialog другому GtkContainer, а затем добавить к GtkNotebook - используя метод gtk.Widget.reparent().

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 ()

С интерфейсом, созданным в Glade, вы должны сделать простой трюк для этого решения. Создать вкладку "О программе" в блокноте с добавлением GtkBox (с идентификатором например "about_box"). Тогда вы можете сделать что-то вроде этого:

box = builder.get_object ("about_box")
about.vbox.reparent (box)

По некоторым причинам Глейда GtkAboutDialog область содержимого содержит также GtkButtonBox, Если вам не нужны эти кнопки, просто уничтожьте их:

about.action_area.destroy()

Если вы хотите только кнопку "Кредиты", без кнопки "Закрыть", сделайте что-то вроде этого:

close_button = about.get_widget_for_response(Gtk.ResponseType.CANCEL)
close_button.destroy()
Другие вопросы по тегам