【发布时间】:2013-02-08 10:02:10
【问题描述】:
在一个带有 Python 的 GTK3 程序上,我实现了一个日志。这是一个在 ScrolledWindow 中带有 TextBuffer 的 TextView。通过例程,我在此日志中添加了一个新行。之后它应该滚动到最后一行。
def append_log(self, line):
self.textbuffer.insert(self.textbuffer.get_end_iter(), "\n"+line, -1)
# scrolling down
应该是这样的:http://www.physik.tu-dresden.de/~s9472632/log_manual.png
但它不起作用。我试过下面的代码。
# nothing happens
adj = self.scrolledwindow.get_vadjustment()
adj.set_value(adj.get_upper()-adj.get_page_size()) # same without subtraction (only upper or page_size)
self.scrolledwindow.set_vadjustment(adj) # with and without this line
.
# nothing happens
self.textview.scroll_to_iter(self.textbuffer.get_end_iter(), 0.0, False, 0.5, 0.5)
.
# works a bit but scroll bars cover the text (see picture below)
self.textview.scroll_to_mark(self.textbuffer.get_insert(), 0.0, False, 0.5, 0.5)
图片:http://www.physik.tu-dresden.de/~s9472632/log_scroll.png
scroll_to* 的最后四个参数(within_margin、use_align、xalign、yalign)似乎对结果没有影响。
它是如何工作的?
再见马库斯
【问题讨论】:
-
确保您对具有本机滚动功能的子项使用 add 方法。这是 C api 中的
container_add。