当我尝试向下滚动到 TreeView 的末尾(位于 ScrolledWindow 内)时,它不会滚动到应有的位置,而是滚动到之前的一两行。
我尝试了几种方法,它们都提供相同的行为:
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)
问题出在哪里?
最佳答案
C API 文档可能会有所帮助: http://library.gnome.org/devel/gtk/stable/GtkTreeView.html#gtk-tree-view-scroll-to-cell
你可以看到那里有一些参数会让事情变得困惑,这取决于 pygtk 如何默认它们。您可以尝试显式指定所有参数。
TreeView 和 TextView 的一个技巧是它们进行异步布局,因此如果尚未计算行高,则调整的“上部”很可能为零。
如果干扰了调整,则无需将其重新设置,尽管它应该是无害的。
“scroll-child”信号不是您想要的,它是一个用于绑定(bind)按键的按键绑定(bind)信号。
关于python - 无法滚动到 TreeView PyGTK/GTK 的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3510705/