无法滚动到PyGTK/GTK TreeView的底部
当我尝试在一个包含在滚动窗口中的树视图(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’信号并不是你想要的,它是用来绑定按键的信号。