Skip to main content
 首页 » 编程设计

python之如何使 IconView 中的图标均匀分布

2025年05月04日8Renyi-Fan

我有一个 gtk.IconView,里面有几个图标。有时我会调整窗口大小以查看更多图标。当我这样做时,生成的额外空间并没有在所有列之间均匀分布。相反,所有内容都放在右边,直到有足够的空间容纳新列。

我在 the documentation 中没有看到任何内容那会让我自动执行此操作。我是否需要检查调整大小信号,然后手动设置列间距和行间距?如果是这样,我使用哪个调整大小信号。

这是我的意思的图片。我用红色标记了额外的空间。

这是我希望看到的(当然,间隙实际上是均匀分布的,不像我可怜的 MS Paint 工作)。

请您参考如下方法:

我们在 Ubuntu Accomplishments Viewer 中遇到了这个问题,在我们设法解决它的过程中,我将介绍我们的解决方案。

诀窍是将GtkIconView 放在GtkScrolledWindow 中,并将它的hscrollbar_policy 设置为“always”。然后,必须使用检查调整大小信号,以在用户调整窗口大小时使用react(请注意,必须检查大小是否已更改,因为信号也会在例如窗口被拖动时发出)。当大小改变时,GtkIconView 使用的模型必须被清除并重新创建,因为这会触发 GtkIconView 正确地重新分配新获得的空间(或缩小)。 另外,水平滚动条永远不会被看到,因为 GtkIconView 使用的空间与 GtkScrolledWindow 使用的空间一样多。