在 pyGTK 中制作 GUI 时,我经常希望有多个子对象以指定的比例展开。作为一个例子(不是我的特定应用程序,只是我觉得很容易画的东西),假设我正在创建某种照片查看器,它在右侧的选项卡中显示 EXIF 元数据,我希望这些保持 2: 1 比例,所以照片总是占宽度的 2/3,元数据占宽度的 1/3:
在 wxWindows 中,您将为这些项目中的每一个分配一个“权重”参数,因此左侧的 VBox
将具有 weight = 2
并且右侧的 VBox
将有 weight = 1
,然后当您调整窗口大小时,容器将保持其 2:1 的比例。然而,在 GTK+ 中,似乎你所能做的就是选择是否要扩展容器,所以在这种情况下我会使用类似的东西:
top_level_hbox.pack_start(exif_container, expand=False)
top_level_hbox.pack_start(photo_container, expand=True, fill=True)
不过,我相信这会使 exif_container
的大小根据其子部件的大小而定,而 photo_container
会根据需要增长,因此即使它们最初的比例为 2:1,这将无法在调整窗口大小后继续存在。在 GTK 中是否有一种简单的或至少是标准的方法来进行这种“加权扩展”?
最佳答案
您可以使用表格布局来做到这一点。 IE。而不是使用 hbox,创建一个 gtk.Table,具有单行和 3 列。将照片部分附加到前两列,将状态面板附加到第三列,在展开它们时应保持您想要的 2:1 比例。
例如。
table = gtk.Table(rows=1, columns=3)
table.attach(photo_container, 0, 2, 0, 1) # Span column 0..2
table.attach(exif_container, 2, 3, 0, 1) # Span final column
window.add(table)
关于python - 相当于 pyGTK 中的 "weight"参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25701666/