packStart 在 GTK Box 开发中的用途

Purpose of packStart in GTK Box development

我试图了解 packStart 函数何时有用,但我不明白。它有什么作用?我试着寻找文档,但运气不佳。

这是我正在使用的代码片段。

# add a frame for aesthetic purposes 
frame = gtkFrameNew("Specify data location...")

window$add(frame)

# create and add a new vertical container box 
vbox = gtkVBoxNew(FALSE , 8) 

vbox$setBorderWidth(24)

frame$add(vbox)

# create a horizontal container 

hbox = gtkHBoxNew(FALSE , 8)

vbox$packStart(hbox , FALSE , FALSE , 0)

label = gtkLabelNewWithMnemonic("_File name")

vbox$packStart(label , FALSE , FALSE , 0)

如果您的 R 绑定没有随 GTK+ 文档一起提供,您将需要回退到 regular GTK+ documentation(它使用 C)。

gtk_box_pack_start() 是您可以将小部件添加到 GtkBox 的方法之一。第一个参数是要添加的小部件。

接下来的两个参数描述了当盒子本身增长时小部件应该如何增长。它们分别称为 expandfill。有关扩展和填充小部件的讨论,请参阅 this

最后一个参数只是说明这个小部件与您添加到容器中的下一个小部件之间有多少space。

pack start 的意思是按顺序添加小部件,第一个小部件出现在框的顶部。例如,如果我这样做

vbox$packStart(widget1 , FALSE , FALSE , 0)
vbox$packStart(widget2 , FALSE , FALSE , 0)
vbox$packStart(widget3 , FALSE , FALSE , 0)

盒子看起来像

-------
widget1
widget2
widget3



-------

还有其他方法可以将控件添加到 GtkBox。 pack_end()pack_start() 的工作方式类似,只是控件向后添加到框的底部。 add() (gtk_container_add()) 的行为类似于调用 pack_start(widget, FALSE, FALSE, 0));我链接的第二页上描述的 hexpand/vexpand/halign/valign 属性可用于稍后更改参数。

祝你好运!