我的应用程序有一个 gtk.TextView(实际上是 gtksourceview.View)小部件,它显示一个(大)文本文件并由 TreeView 索引。双击 TreeView 中的一个条目,会跳转到 TextView 中对应的位置,涉及到这个方法:
def jump_to_line(self, startline):
itr = self.buffer.get_iter_at_line(startline)
mark = self.buffer.create_mark(None, itr, True)
self.scroll_to_mark(mark, 0.0, use_align=True, yalign=0.0)
self是我的widget,是TreeView的子类,self.buffer显然是对应的gtk.TextBuffer。startline 这里是一个整数,表示要跳转到哪一行。问题是,当我使用“大”文件(小于 1 MB)进行测试时,这可以按预期工作,但是对于“非常大”(> 10 MB),在我单击小部件之前不会发生跳转,此时它会更新。我不知道为什么它不能自动滚动较大的文件。有什么我不知道的吗?