在HPaned问题中调整gtk TreeView的大小

时间:2011-01-21 01:07:17

标签: python gtk pygtk

我在hpaned的左侧有一个树视图,但是当我尝试将栏移到左侧以使树视图小于其自动大小而不是调整树视图大小时,它会将整个程序窗口向右扩展。关于如何解决这个问题的任何想法?

来源的相关部分如下:

对于hpaned。

    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 个答案:

答案 0 :(得分:2)

我打算回答这个问题,然后我意识到我的答案是用户答案的​​重复。但是,由于他没有公布他的决议作为答案,我还是会的。 (如果他没有弄明白,我会发布以下内容。)

展开和填充似乎在这个盒子里的各种物体之间造成了一些空间争夺(因为我假设你的所有物体都这样做。我曾经习惯这样做,但没有问题。)在PyGTK文档中,“Expand”定义为

  

如果给孩子分配给盒子的额外空间,则为真。额外的   空间将在使用它的所有盒子之间平均分配   选项。

和“填充”为:

  

如果扩展选项给孩子的空间是实际的,则为真   分配给孩子,而不仅仅是填充它。此参数没有   如果expand设置为False,则生效。一个孩子总是被分配   gtk.HBox的高度和gtk.VBox的全宽。这个选项   影响另一个维度。

所以,基本上,这个盒子给了所有相同的空间......你给了一个更多的东西,它给了另一个,并且对象都把它拿走并变得更大。然后窗口必须扩展以进行补偿。

要解决此问题,请将其中一个或两个选项设置为“False”。将“Expand”设置为“False”也会关闭“Fill”,但只将“Fill”设置为“False”将导致该框为“Fill-False”对象提供额外的空格作为填充。