在HPaned中调整gtk TreeView大小的问题
我在一个水平分割的窗口左边有一个树形视图,但是当我试图把分隔条向左移动,让树形视图变得比它自动的大小小的时候,结果不是缩小树形视图,而是整个程序窗口向右扩展了。有没有什么办法可以解决这个问题?
相关的代码部分如下:
这是水平分割的部分。
self.vpan = gtk.VPaned()
self.hpan = gtk.HPaned()
self.vpan.show()
self.hpan.show()
self.vBox1.pack_end(self.hpan, True, True, 0)
self.hpan.pack2(self.vpan,True, True)
这是树形视图的部分。
self.ftree = gtk.TreeStore(str,str,str)
self.treefill(None, os.path.abspath(os.path.dirname(__file__)))
self.tree = gtk.TreeView(self.ftree)
self.tvcolumn = gtk.TreeViewColumn('Project')
self.tree.append_column(self.tvcolumn)
self.cellpb = gtk.CellRendererPixbuf()
self.celltxt = gtk.CellRendererText()
self.tvcolumn.pack_start(self.cellpb,False)
self.tvcolumn.pack_start(self.celltxt,True)
self.tvcolumn.set_attributes(self.cellpb, stock_id=0)
self.tvcolumn.set_attributes(self.celltxt, text=1)
self.tvcolumn.set_resizable(True)
self.hpan.pack1(self.tree,True,True)
self.tree.show()
1 个回答
2
我本来打算回答这个问题,但后来发现我的回答和用户的回答差不多。不过,因为他还没有把自己的解决方案发出来,我还是决定分享一下。(下面是如果他没有找到解决办法我会发的内容。)
在这个框里,“Expand”(扩展)和“Fill”(填充)似乎在争夺空间(我假设你所有的对象都是这样)。我以前也有这个习惯,不过没什么大问题。)在PyGTK的文档中,“Expand”的意思是:
如果子对象需要额外的空间分配给这个框,就返回真。这个额外的空间会在使用这个选项的所有子对象之间平均分配。
而“Fill”的意思是:
如果通过扩展选项给子对象的空间实际上是分配给子对象的,而不仅仅是填充它。如果扩展设置为假,这个参数就没有效果。子对象总是会被分配到gtk.HBox的全部高度和gtk.VBox的全部宽度。这个选项会影响另一个维度。
所以,简单来说,这个框给每个对象分配了相同的空间……你给一个对象更多空间,它就会把这个空间分给其他对象,结果所有对象都变大了。然后窗口就得扩展来适应这些变化。
要解决这个问题,可以把这两个选项中的一个或两个设置为“假”。把“Expand”设置为“假”也会关闭“Fill”,但如果只把“Fill”设置为“假”,框就会把额外的空间作为填充分配给那些“Fill-False”的对象。