无法滚动到PyGTK/GTK TreeView的底部

1 投票
1 回答
1277 浏览
提问于 2025-04-16 02:57

当我尝试在一个包含在滚动窗口中的树视图(TreeView)里向下滚动到最后时,它并没有按预期的滚动到最底部,而是提前一两行停下来了。

我试了几种方法,但结果都是一样的:

self.wTree.get_widget("tree_last_log").scroll_to_cell((self.number_results-1,))
# or 
self.wTree.get_widget("tree_last_log").set_cursor((self.number_results-1,))
# or 
adj = self.wTree.get_widget("scrolledwindow1").get_vadjustment()
adj.set_value(adj.get_property('upper'))
self.wTree.get_widget("scrolledwindow1").set_vadjustment(adj)
# or 
self.wTree.get_widget("scrolledwindow1").emit('scroll-child', gtk.SCROLL_END, False)

这问题出在哪里呢?

1 个回答

1

这个C语言的API文档可能会对你有帮助:http://library.gnome.org/devel/gtk/stable/GtkTreeView.html#gtk-tree-view-scroll-to-cell

你会发现这里有一些参数,如果不小心使用,可能会导致问题,具体取决于pygtk的默认设置。你可以尝试明确地指定所有参数。

关于TreeView和TextView,有个小技巧就是它们的布局是异步的,所以在调整时,如果行高还没计算出来,"上面"的值可能会是零。

如果你在调整设置时出错了,其实不需要把它恢复到原来的状态,虽然这样做是安全的。

‘scroll-child’信号并不是你想要的,它是用来绑定按键的信号。

撰写回答