1
저는 파이썬에서 gtk를 사용하여 작성 중이며 자동으로 괄호를 닫고 그 사이에 커서를 놓기를 원합니다. 문제는 다음 오류를 무작위로 얻고 있습니다. 프로그램이 다운 :gtk 텍스트 문제 itter
def insert_text(self, buff, itter, text, length):
if text == '(':
buff.insert_at_cursor('()')
mark = buff.get_mark('insert')
Iter = buff.get_iter_at_mark(mark)
buff.place_cursor(buff.get_iter_at_line_offset(itter.get_line(),Iter.get_offset()-1))
사람이 어떻게이 오류를 수정하는 방법을 말해 줄래 :
./mbc.py:266: GtkWarning: Invalid text buffer iterator: either the iterator is
uninitialized, or the characters/pixbufs/widgets in the buffer have been modified since
the iterator was created.
You must use marks, character numbers, or line numbers to preserve a position across
buffer modifications.
You can apply tags and insert marks without invalidating your iterators,
but any mutation that affects 'indexable' buffer contents (contents that can be
referred to by character offset)
will invalidate all outstanding iterators
buff.place_cursor(buff.get_iter_at_line_offset(itter.get_line(),Iter.get_offset()-1))
./mbc.py:266: GtkWarning: gtktextbtree.c:4094: char offset off the end of the line
buff.place_cursor(buff.get_iter_at_line_offset(itter.get_line(),Iter.get_offset()-1))
Gtk-ERROR **: Char offset 568 is off the end of the line
aborting...
Aborted
그 지역 주변의 코드는 무엇입니까? 괄호 사이에 커서를 위치시키는 다른 fmethod를 찾을 수 없습니다. '