如何在 GtkNotebook 小部件中嵌入 GtkAboutDialog 的内容

Dav*_*lla 7 python gtk application-development pygi

我正在编写一个基于选项卡的 Python 应用程序,我不希望它有任何额外的弹出对话框。

我想使用该Gtk.AboutDialog功能,但不希望它显示为单独的窗口。相反,我希望将它嵌入到我的Gtk.Notebook(我用 Glade 创建的)选项卡之一中。

我找不到任何明显的方法来做到这一点。有没有人有任何指示?

Dam*_*ian 6

您可以将内容区域( 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 ()
Run Code Online (Sandbox Code Playgroud)

使用 Glade 创建的界面,您必须为这个解决方案做一些简单的技巧。在笔记本中创建“关于”选项卡并附加GtkBox(带有 id 例如“about_box”)。然后你可以做这样的事情:

box = builder.get_object ("about_box")
about.vbox.reparent (box)
Run Code Online (Sandbox Code Playgroud)

由于某些原因,Glade 的GtkAboutDialog 内容区域也包含GtkButtonBox. 如果您不需要此按钮,只需销毁它们:

about.action_area.destroy()
Run Code Online (Sandbox Code Playgroud)

如果您只想要“积分”按钮,而没有“关闭”按钮,请执行以下操作:

close_button = about.get_widget_for_response(Gtk.ResponseType.CANCEL)
close_button.destroy()
Run Code Online (Sandbox Code Playgroud)