2014-12-25 2 views
1

tkinter 텍스트로 간단한 프로그램을 작성하고 아래쪽 화살표를 함수에 바인드하지만 CURRENT 및 INSERT 커서가 올바르지 않습니다.
먼저 CURRENT가 업데이트되지 않고 때로는 잘못된 인덱스
으로 업데이트됩니다. 둘째, INSERT는 항상 업데이트되지만 인덱스는 마지막 위치입니다 (예 : 현재 인덱스가 1 행 1 열이면 아래로 누름). 키를 누르면 인쇄 된 결과는 여전히 1.1 (줄 1 열 1)이지만 내 커서는 이미 2 줄에 있습니다.
아무도 그것에 대해 경험이 있습니까? 미리 감사드립니다!파이썬 tkinter 텍스트 삽입 커서 현재 커서

def tipKeyDown(event): 
    pos=text.index(CURRENT) 
    print(pos) 
    pos=text.index(INSERT) 
    print(pos) 

text = Text(textFrm, relief=SOLID) 
text.bind('<Button-1>', tipButton1) 
text.bind('<Down>', tipKeyDown) 

답변

0

텍스트가 변경된 후에 발생하는 KeyRelease을 사용할 수 있습니다.

text.bind('<KeyRelease-Down>', tipKeyDown) 

BTW, CURRENT는 마우스 포인터에 가장 가까운 문자에 해당합니다. (삽입 커서와 관련 없음)

+0

대단히 감사합니다. 한 가지 더 질문이 있습니다. 마우스에 이런 종류의 문제가 있습니까? 내 말은 왼쪽 클릭이 해제 된 후에 이벤트를 묶어야하는지 여부입니다. 그렇다면 바인드 첫 번째 매개 변수에 대한 키워드는 무엇입니까? – xuanzhui

+0

@ xuanzhui, 나는 마우스 클릭으로 실험하지 않았다. 그러나'KeyPress'와'KeyRelease'와 같은'ButtonPress'와'ButtonRelease'가 있습니다. – falsetru

+0

알았어. 도와 줘서 고마워. – xuanzhui

0

이것은 tkinter가 이벤트를 처리하는 순서와 관련이 있습니다. 짧은 대답은, 위젯에 사용자 지정 바인딩은 기본 바인딩하기 전에 처리하고, 텍스트를 삽입하거나 삭제 될 수 기본 바인딩을의되어, 인덱스 등

여기에서 자세한 내용을 참조, 변경 : Basic query regarding bindtags in tkinterHow to bind self events in Tkinter Text widget after it will binded by Text widget?Why Text cursor coordinates are not updated correctly?