我有一个Gtk.ScrolledWindow()
with inside a Gtk.TextView()
,(我正在使用 PyGObject 内省)。
在我从另一个线程插入一些文本并自动滚动后,连续多次调用该方法append_text
后,我收到了几个警告,然后 GUI 崩溃了。
这是我的代码中麻烦的部分:
class TextViewWindow(Gtk.Window):
[...]
def append_text(self, text):
self.textbuffer.insert(self.textbuffer.get_end_iter(), text)
self.scroll_to_end()
def scroll_to_end(self):
self.textbuffer.place_cursor(self.textbuffer.get_end_iter())
insert_mark = self.textbuffer.get_insert()
self.textview.scroll_to_mark(insert_mark , 0.0, True, 0.0, 1.0)
有谁知道我做错了什么?
--
以下是我得到的一些错误:
Gtk-WARNING **:无效的文本缓冲区迭代器:迭代器未初始化,或者缓冲区中的字符/pixbufs/小部件自迭代器创建以来已被修改。您必须使用标记、字符编号或行号来跨缓冲区修改保留位置。您可以在不使迭代器失效的情况下应用标签和插入标记,但是任何影响“可索引”缓冲区内容(可以通过字符偏移量引用的内容)的突变都会使所有未完成的迭代器失效
Pango-CRITICAL **:pango_layout_index_to_pos:断言“布局!= NULL”失败
Gtk-WARNING **: gtktextview.c:4813: 自上次验证屏幕上的行以来,不知何故修改了一些文本行或发生了滚动 - 可能是文本小部件错误。
Gtk:ERROR:gtktextview.c:4814:gtk_text_view_paint:代码不应到达