我正在尝试使用文本填充SourceView的缓冲区,然后滚动以显示特定的行,如下所示:
lines = '....'.split('\n')
line_number = 76 # For instance, assuming lines has at least this many lines
buffer = view.get_buffer()
for line in lines:
buffer.insert(end_iter, line + '\n')
iter = buffer.get_iter_at_line()
mark = buffer.get_mark('insert')
buffer.move_mark(mark, iter)
mark = buffer.get_mark('selection_bound')
buffer.move_mark(mark, iter)
view.scroll_to_mark(mark, 0.3, True, 0, 0.5)
这会滚动到缓冲区中的或多或少的随机位置。我有什么问题吗?或者这不起作用?
答案 0 :(得分:2)
你是对的,scroll_to_iter
取决于空闲的重新计算。就此而言,scroll_to_mark
也是如此。这对我有用:
from gi.repository import GLib
#........ code here
GLib.idle_add(view.scroll_to_mark, mark, 0.1, True, 0.0, 0.5)