Tkinter의 바인딩 태그: 'Lag by One' 문제 공개
기본 바인딩 태그가 사용되는 다음 Tkinter 코드를 고려하세요.
entry1.bind("<KeyPress>", OnKeyPress)
OnKeyPress 내에서는 이벤트 값에 액세스할 수 없습니다. 함수로 인해 "1씩 지연" 효과가 발생합니다. 이는 기본 바인딩 태그가 문자를 삽입하는 클래스 바인딩 전에 위젯 내용을 평가하는 위젯 태그보다 우선순위를 지정하기 때문에 발생합니다.
설명:
이벤트가 다음과 같은 경우 트리거되면 Tkinter는 포커스가 있는 위젯에 대한 관련 바인딩 태그를 결정합니다. 기본적으로 초기 태그는 위젯 자체입니다. 이 태그에 대한 바인딩이 존재하면 Tkinter는 이를 실행하여 잠재적으로 위젯 내용을 출력합니다. 그러나 바인딩이 정의되지 않은 경우 Tkinter는 다음 태그로 진행합니다.
이 시나리오에서 후속 태그는 위젯 클래스입니다. 클래스 바인딩은 문자를 위젯에 삽입합니다. 따라서 위젯과 클래스 바인딩을 모두 실행한 후에 위젯 콘텐츠가 업데이트됩니다. 이로 인해 "하나씩 지연" 문제가 발생합니다.
해결 방법:
이 문제를 해결하려면 바인딩 태그의 순서를 수정하여 클래스 바인딩이 검사되기 전에 확인되도록 하세요. 위젯 바인딩. 예를 들면 다음과 같습니다.
entry3.bindtags(('.entry1','Entry','post-class-bindings', '.', 'all'))
이 수정을 통해 클래스 바인딩이 이벤트를 먼저 처리하고 위젯 바인딩이 해당 내용을 검색하기 전에 문자를 삽입하도록 합니다. 결과적으로 이벤트 값은 OnKeyPress 내에서 액세스할 수 있습니다.
요약:
Tkinter에서 기본 바인딩 태그를 사용하면 이벤트 값이 다음과 같은 "1씩 지연" 효과가 발생할 수 있습니다. 이벤트 핸들러 내에서 즉시 사용할 수 없습니다. 클래스 바인딩의 우선 순위를 지정하도록 바인딩 태그 순서를 변경하면 이 문제를 해결할 수 있습니다.
위 내용은 Tkinter의 기본 Bindtag가 키 누르기 이벤트에서 '1씩 지연' 문제를 일으키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!