更新:这是最后一个成功的代码。在循环中,我同时构建两个视图列,因此这一行就足够了:
col1.connect("notify::width", lambda col1,_,col2:col2.set_fixed_width(
col1.get_width()), col2)
我认为没有“列小部件”的原因是主要区域只是一个gtk.gdk.Drawable
,每个单元渲染器都在这里绘制自己的东西。然而,每一列都有是小部件的标题,所以我们可以使用它们来做我们想要的事情。
选择一个视图作为主视图,并将另一个设置为具有gtk.TREE_view_COLUMN_FIXED
大小。使用.forall()
浏览主视图的内部子窗口小部件。这些将是代表列标题的gtk.按钮
。连接到他们的大小分配
事件。在该事件处理程序上,获取请求的宽度,以及从属视图上相应列的.set_fixed_width
。
self._svcols = []
def sizealloc(wid, alloc):
ci = self._svcols.index(wid)
cl = self.slaveView.get_column(ci)
cl.set_fixed_width(alloc.width)
def resizes(child):
child.connect( size-allocate , sizealloc)
self._svcols.append(child)
self.mainView.forall(resizes)
即使没有显示列标题,这也能起作用。