0
我有一个应用程序使用GtkTextView和GtkTextBuffer。行被添加到缓冲用它运行在从主处理一个单独的线程以下Python代码:Gtk +3 TextView应用程序崩溃
while True:
if aLogQueue.qsize() > 0:
aBuffer = aLogTextView.get_buffer()
try:
newLogMessage = aLogQueue.get_nowait()
ipri = int(newLogMessage[0])
if(ipri>=self.ListenLogMinPr):
aniter = aBuffer.get_iter_at_line(0)
aBuffer.insert(aniter, newLogMessage)
#mark = aBuffer.get_mark('insert')
#aniter = aBuffer.get_iter_at_mark(mark)
#aBuffer.place_cursor(aniter)
pass
except:
print('threw exception in message loop')
self.gui_shutdown()
aLogQueue是一个行ASCII文本消息的队列。
应用程序工作了一段时间,但后来总是有以下错误
Gtk:ERROR:gtktextview.c:4328:gtk_text_view_validate_onscreen: assertion failed: (priv->onscreen_validated)
请注意,我在0线插入崩溃,使迭代器被插入调用而被破坏的事实应该没有影响。
它在失败之前写入20到200行。它看起来并没有涉及到注销文本缓冲区的边缘,并在预期时出现滚动条。
有什么建议吗?
谢谢RBT,但我需要更多的信息。我有以下方法在GTK的独立线程中运行。 –