GTK SourceView滚动标记不起作用

时间:2018-02-22 18:10:52

标签: gtk3 pygobject gtksourceview

我正在尝试使用文本填充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)

这会滚动到缓冲区中的或多或少的随机位置。我有什么问题吗?或者这不起作用?

1 个答案:

答案 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)
相关问题