如何使widget占据Gtk.HBox中的所有可用空间

如何使widget占据Gtk.HBox中的所有可用空间,gtk,gtk#,gtk2,Gtk,Gtk#,Gtk2,我正在实现一个定制的Gtk小部件,它基于Gtk.EventBox。当我将其插入HBox或VBox时,它占用了OnSizeRequested方法返回的确切大小 如何使我的小部件占据父框、窗口或小部件提供给它的所有空间?就像HBox一样。PackStart和PackEnd有一个fill参数,用于指定应该展开以填充框的项目。您可能需要PackStart(widget,true,true,0) GTK+2和GTK+3中的首选包装方式略有不同。使用GTK+时,您通常会使用GtkBox的expand和fil

我正在实现一个定制的Gtk小部件,它基于
Gtk.EventBox
。当我将其插入
HBox
VBox
时,它占用了
OnSizeRequested
方法返回的确切大小


如何使我的小部件占据父框、窗口或小部件提供给它的所有空间?就像HBox一样。

PackStart和PackEnd有一个fill参数,用于指定应该展开以填充框的项目。您可能需要PackStart(widget,true,true,0)

GTK+2和GTK+3中的首选包装方式略有不同。使用GTK+时,您通常会使用
GtkBox
expand
fill
属性来控制空间的分配方式。使用GTK+3,他们建议用户使用
垂直扩展
水平扩展
垂直填充
水平填充

了解打包工作原理的一个好方法是使用填充和展开特性,以便可以实时查看效果。旧教程(稍微过时)显示了不同包装属性的一些屏幕截图:

在开发小部件时,小部件的用户更有可能决定如何将其打包到更大的UI中。但是,如果您的widget是一个复合widget(从其他widget构建),那么您需要正确地打包其他widget