私は , のGtk.ScrolledWindow()
中に withを持っています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: アサーション `layout != NULL' が失敗しました
Gtk-WARNING **: gtktextview.c:4813: 何らかのテキスト行が変更されたか、画面上の行の最後の検証以降にスクロールが発生しました - テキスト ウィジェットのバグである可能性があります。
Gtk:ERROR:gtktextview.c:4814:gtk_text_view_paint: コードに到達しないでください