确定TreeView行的高度

5 投票
1 回答
1746 浏览
提问于 2025-04-17 00:28

我想设置一个树形视图(treeview)控件的高度,以便能容纳N行数据。为此,我需要先确定每一行的高度。

我使用了下面的代码:

path = Gtk.TreePath().new_first()
height = tree_view.get_cell_area(path, column).height

在创建树形控件、填充数据模型并选择第一行后,高度却被设置为0。我漏掉了什么呢?

附注:当从“行激活”(row_activated)信号处理器中运行相同的代码时,会返回一个有效的高度。

1 个回答

2

可能是这个:(从gtk网站上读取):

“如果路径指向一个当前未显示的路径,那么矩形的y值和高度属性将为0。所有单元格的矩形总和并不能覆盖整个树形结构;例如,行与行之间还有额外的像素。返回的矩形等同于传递给gtk.CellRenderer.render()方法的cell_area。这个方法只有在树形视图被实际显示出来时才有效。”

你也可以用这段代码强制在gtk中显示待处理的操作:

    ##  force the refresh of the screen
    while gtk.events_pending():
        gtk.main_iteration()

撰写回答