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

use*_*261 9 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)
Run Code Online (Sandbox Code Playgroud)

而对于树视图.

    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()
Run Code Online (Sandbox Code Playgroud)

Cod*_*e92 2

我正要回答这个问题,然后我发现我的答案是用户答案的​​重复。但是,由于他还没有发布他的决议作为答案,所以我无论如何都会发布。(如果他没有弄清楚的话,我会发布以下内容。)

扩展和填充似乎会导致此框中的各个对象之间的空间争夺(因为我假设所有对象都这样做。我以前也有这个习惯,但没问题。) PyGTK 文档中,“Expand”定义为

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

并将“填充”为:

如果扩展选项给子级的空间实际上分配给子级,而不是仅仅填充它,则为 true。如果 Expand 设置为 False,则此参数无效。子级总是分配 gtk.HBox 的完整高度和 gtk.VBox 的完整宽度。此选项会影响其他维度。

所以,从本质上讲,盒子给所有东西都提供了相同的空间……你给一个东西更多的空间,它给另一个东西更多的空间,所有的物体都接受了它并变得更大。然后窗口必须扩展以进行补偿。

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