我有一个使用GtkTextView和GtkTextBuffer的应用程序。使用以下python代码将行添加到缓冲区,这些python代码在与主进程不同的线程中运行:
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()
Run Code Online (Sandbox Code Playgroud)
aLogQueue是一行ASCII文本消息的队列。
该应用程序运行了一段时间,但随后始终由于以下错误而崩溃
Gtk:ERROR:gtktextview.c:4328:gtk_text_view_validate_onscreen:断言失败:(priv-> onscreen_validated)
请注意,我在第0行进行插入,因此迭代器被insert调用破坏的事实不起作用。
它在失败前写入20至200行。它似乎与注销文本缓冲区的边缘无关,并且在期望时会出现滚动条。
有什么建议么?
| 归档时间: |
|
| 查看次数: |
535 次 |
| 最近记录: |