Tkinter Text 위젯의 이벤트 바인딩 순서
Tkinter Text 위젯에 이벤트를 바인딩할 때 바인딩 순서를 고려하는 것이 중요합니다. 처리됨. 기본적으로 위젯의 바인딩이 먼저 처리된 다음 클래스 바인딩이 처리됩니다.
문제: 콘텐츠 변경 전에 바인딩이 발생합니다
질문에 설명된 문제는 다음과 같은 경우에 발생합니다. 자체 바인딩은 텍스트 위젯 바인딩 전에 호출됩니다. 이 경우 위젯의 바인딩이 텍스트 내용을 변경하여 자체 바인딩을 너무 일찍 트리거합니다.
해결책: 바인딩 순서 변경
이 문제를 해결하려면 바인딩 순서를 따르세요.
바인딩 순서 변경의 결과
바인드 태그 재정렬:
추가 바인딩 태그 소개:
예제 코드
아래 코드는 바인딩 순서를 조정하는 두 가지 접근 방식을 보여줍니다.
<code class="python">import tkinter as tk def on_keypress(event): txt = event.widget.get('1.0', 'end') status['text'] = f"The value in the text widget is {txt}." root = tk.Tk() # Widget with default bindtags text1 = tk.Text(root, height=5, width=30) text1.pack() # Widget with reversed bindtags text2 = tk.Text(root, height=5, width=30) text2.bindtags(('Text', '.text2', '.', 'all')) text2.pack() # Widget with additional bindtag text3 = tk.Text(root, height=5, width=30) text3.bindtags(('.text3', 'Text', 'post-class-bindings', '.', 'all')) text3.pack() # Label showing the value in the text widgets status = tk.Label(root, justify="left") status.pack() # Bind to <KeyPress> event text1.bind('<KeyPress>', on_keypress) text2.bind('<KeyPress>', on_keypress) text3.bind_class('post-class-bindings', '<KeyPress>', on_keypress) root.mainloop()</code>
위 내용은 Tkinter 텍스트 위젯에서 바인딩 순서를 제어하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!