我有一个带有几个图标的gtk.IconView。有时我会调整窗口大小以查看更多图标。当我这样做时,生成的额外空间不会在所有列之间均匀分布。相反,它们都被放在右边,直到有足够的空间容纳新列。
我在the documentation中没有看到任何可以让我自动执行此操作的内容。我是否需要检查调整大小信号,然后手动设置列和行间距?如果是这样,我会使用哪个调整大小信号。
这是我的意思的图片。我用红色标记了额外的空间。
这是我想看到的(当然,间隙实际上是均匀间隔的,不像我糟糕的MS Paint工作)。
答案 0 :(得分:1)
我们在Ubuntu Accomplishments Viewer中遇到了这个问题,当我们设法解决它时,我会提出我们的解决方案。
诀窍是将GtkIconView置于GtkScrolledWindow 中,并将其hscrollbar_policy设置为“always”。然后,必须使用检查调整大小信号,以在用户调整窗口大小时作出反应(注意,如果大小已经改变则必须检查它,因为当例如拖动窗口时也发出信号)。当大小改变时,必须清除并重新创建GtkIconView使用的模型,因为这会触发GtkIconView正确地重新分配新获得的空间(或缩小)。 另外,结果将永远不会看到水平滚动条,因为GtkIconView使用了与GtkScrolledWindow一样多的空间。
答案 1 :(得分:0)
是的,看起来非常肥胖,你需要自己做。并且重新调整信号,我会检查 GtkContainer :: check-resize 。
答案 2 :(得分:0)
使用事件size_allocate。
我定义了我的课程:
class toto(Gtk.IconView):
def __init__(self):
super(toto,self).__init__()
self.connect("size_allocate",self.resize)
self.set_columns(4)
然后我修改工作列数
def resize(self,_iv,_rect):
print("X",rect.x)
print("Y",rect.y)
print("W",rect.width)
print("H",rect.height)
# calculate number of columns, let's say 3
_cols=3
self.set_columns(_cols)
似乎为我工作