make gtk widget填充父窗口

Jul*_*ann 2 xml gtk pygtk alignment

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

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

提前致谢!

eba*_*ssi 6

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

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


and*_*abs 5

不知道您的程序当前是什么,我只能给出一个一般性的答案。有两种方法可以解释您的第一个问题:我都会回答。

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

第二种是布局容器。这些就是GtkBox和GtkGrid之类的东西,它们使您可以将多个小部件打包成整齐的布局。对于这些,GTK +提供了关于各个插件到组四个小部件属性:hexpandhalignvexpand,和valign。的hv所述属性适用于(水平或垂直),其尺寸确定。如果expand为is TRUE,则将使用非扩展窗口小部件的首选大小来放置窗口小部件后剩余的空间。如果alignGTK_ALIGN_FILL,则小部件将填充给定的空间。该页面应能更好地说明。

请注意,对于GTK +,小部件是由其父级指定大小的,而不是相反。小部件可以请求给定的大小,但是父级可以随意忽略它。(GtkWindow是不触发大小请求的示例;通常,除非明确覆盖,否则它将自动调整大小以使其内容可见。)

存在用于构建GTK + UI的基于XML的格式。它由GtkBuilder类型提供,而Glade会生成这些文件,因此您不必自己编写XML格式。如果您确实想手动编写UI文件,则每个小部件的文档都会有一个“ GtkXxx as GtkBuildable”部分,其中显示了如何编写XML。