我的应用程序有一个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 here是一个整数,表示要跳转到哪一行。问题是,当我使用“大”文件(小于1 MB)进行测试时,这可以按预期工作,但是“非常大”(> 10 MB),直到我点击小部件才会发生跳转,此时它会更新。我不知道为什么它不能自动滚动更大的文件。我有什么不知道的吗?
答案 0 :(得分:0)
使用self.scroll_to_iter进行解决。