【发布时间】:2018-02-22 18:10:52
【问题描述】:
我正在尝试用文本填充 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)
这会滚动到缓冲区中或多或少的随机位置。我在这里做错了吗?或者这根本行不通?
【问题讨论】:
-
我不确定
scroll_to_mark,但scroll_to_iter适合我。 -
scroll_to_iter对我不起作用。我相信这是因为我在填充文本缓冲区后立即调用它,并且scroll_to_iter依赖于在空闲处理程序中计算的行高。这在scroll_to_iter的文档中有所描述,该文档建议使用scroll_to_mark来“避免奇怪”。我只是得到了另一种奇怪的感觉。 -
您已应用标签
pygtk、gtk3和pyobject。这些不兼容。要么是 pygtk 和 gtk2,要么是 gtk3 和 pyobject。为了清楚起见,请修正。
标签: gtk3 pygobject gtksourceview