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

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

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

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

7
задан 17 May 2012 в 02:56

1 ответ

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

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()
0
ответ дан 17 May 2012 в 02:56

Другие вопросы по тегам:

Похожие вопросы: