make gtk widget填充父窗口

时间:2015-05-01 10:31:56

标签: xml gtk alignment pygtk

我是gtk编程的新手(但是经验丰富的python)。我有一个窗口,有一个按钮小部件的孩子。如果我想让按钮完全填满窗户,我该怎么办?

顺便说一句,使用xml(fill-parent)非常容易,是否有类似于gtk的xml本机?

提前致谢!

3 个答案:

答案 0 :(得分:6)

默认情况下,窗口小部件只会获得所请求的相同空间量,而不会小于其最小大小。

如果您希望窗口小部件填充其父级的可用空间,则需要使用Gtk.Widget.set_hexpand()Gtk.Widget.set_vexpand()将其标记为可展开。

答案 1 :(得分:5)

在不知道你的节目目前是什么的情况下,我只能给出一般答案。有两种方法可以解释你的第一个问题;我会回答这两个问题。

GTK +中有两种类型的容器。第一个是 bin ,只有一个子节点,并且该子节点会自动获得要填充的父节点的整个大小。 GtkWindow,GtkScrolledWindow,GtkFrame等都是垃圾箱。如果您将小部件直接添加到GtkWindow,就像在Mohsen的回答中一样,它应该填充容器。

第二种类型是布局容器。这些是像GtkBox和GtkGrid这样的东西,可以让你将多个小部件打包成一个整洁的布局。对于这些,GTK +在每个要设置的小部件上提供四个小部件属性:hexpandhalignvexpandvalignhv确定属性适用的维度(水平或垂直)。如果expandTRUE,则在使用首选大小定位非展开小部件后,将为小部件提供剩余空间。如果alignGTK_ALIGN_FILL,则小部件将填充给定空间。 This page应该更好地解释。

请注意,对于GTK +,窗口小部件的大小由其父级给出,而不是相反。窗口小部件可以请求给定的大小,但父级可以自由忽略它。 (GtkWindow是一个不会忽略大小请求的示例;通常它会自动调整大小以使其内容足够可见,除非明确覆盖)。

有一种基于XML的格式可用于构建GTK + UI。它由GtkBuilder类型提供,Glade生成这些文件,因此您不必自己编写XML格式。如果您 想要手动编写您的UI文件,那么每个小部件的文档都会有一个部分" GtkXxx作为GtkBuildable"这表明了如何编写XML。

答案 2 :(得分:1)

默认情况下,添加到许多类型容器的任何窗口小部件都填充所有父窗口:

{{1}}