相当于pyGTK中的“weight”参数?

2024-04-16 18:57:12 发布

您现在位置:Python中文网/ 问答频道 /正文

在pyGTK中制作GUI时,我经常希望有多个子对象以指定的比率展开。作为一个例子(不是我的特定应用程序,只是一些我觉得很容易绘制的东西),想象一下我正在创建某种照片查看器,在右侧的选项卡中显示EXIF元数据,我希望这些图片保持2:1的比例,因此照片总是占到宽度的2/3,而元数据占宽度的1/3:

{1美元^

在wxWindows中,您将为每个项目分配一个“weight”参数,这样左VBox将具有weight = 2,而右侧{}将具有{},然后当您调整窗口大小时,容器将保持其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中有没有一种简单的或者至少是标准的方法来实现这种“加权扩展”?在


Tags: 数据gtk宽度containertoplevelstart容器
2条回答

你可以用表格布局来做这个。也就是说,与其使用hbox,不如创建一个gtk.表格,单行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)

我同意布赖恩的建议gtk.表格. 要强制表单元格的大小相同,可以在构造函数中指定homogeneous=True。在

另一种方法是将photo峎u容器和exif_容器打包到gtk.VPaned公司{2{用户可以使用一个子容器}动态地控制两个容器。在

就个人而言,我倾向于使用一个简单的gtk.HBox公司使用一个固定大小的exif帴容器作为接口,尽管我可能会将photo帴容器放入gtk.滚动窗口. 在

相关问题 更多 >