Tkinter 텍스트 위젯에서 바인딩은 어떻게 작동하나요?
Tkinter에서 텍스트 위젯과 상호작용할 때 키 입력이 연결된 바인딩을 트리거합니다. 위젯으로. 이러한 바인딩은 입력할 때 텍스트가 업데이트되는 방식을 결정합니다. 그러나 내장된 클래스 바인딩을 통해 텍스트 업데이트가 발생한 후 자신의 코드를 실행하려는 경우가 있습니다.
비하인드 스토리: 바인딩 태그 및 이벤트 처리
Tkinter는 이벤트를 처리하기 위해 바인딩 태그를 사용합니다. 각 위젯에는 위젯과 동일한 이름을 가진 바인드 태그가 있으며 다른 바인드 태그에는 위젯의 클래스, 루트 창의 경로 및 일반 "all" 태그가 포함됩니다. 위젯에는 가장 구체적인 것(위젯)부터 시작하여 가장 덜 구체적인 것(모두)으로 끝나는 순서대로 이벤트를 처리하는 바인드 태그가 할당됩니다.
바인딩 순서 문제 해결
클래스 바인딩 후 자체 정의 이벤트를 바인딩하려면 바인딩 태그 순서를 변경하거나 새 바인딩 태그를 도입하는 두 가지 옵션이 있습니다.
옵션 1: 바인딩 태그 재정렬
바인드 태그의 순서를 조정하여 클래스 바인딩보다 사용자 정의 바인딩에 대한 이벤트 처리의 우선순위를 지정할 수 있습니다. 예를 들어 위젯을 나타내는 바인드 태그(아래 코드의 "entry1")가 있는 경우 바인드 태그 목록에서 클래스 바인드 태그("Entry") 아래로 이동하세요.
<code class="python">entry1.bindtags(('Entry', '.entry1', '.', 'all'))</code>
옵션 2: 새 바인드 태그 소개
또는 클래스 바인드 태그 뒤에 추가 바인드 태그를 만들 수도 있습니다. 그러면 바인딩이 이 새 태그에 연결됩니다.
<code class="python">entry3.bindtags(('.entry3','Entry','post-class-bindings', '.', 'all')) # Custom bindings are attached to the 'post-class-bindings' tag entry3.bind_class("post-class-bindings", "<KeyPress>", OnKeyPress)</code>
코드 예
다음 코드는 이러한 기술의 사용을 보여줍니다.
<code class="python">import Tkinter def OnKeyPress(event): value = event.widget.get() string="value of %s is '%s'" % (event.widget._name, value) status.configure(text=string) root = Tkinter.Tk() entry1 = Tkinter.Entry(root, name="entry1") entry2 = Tkinter.Entry(root, name="entry2") entry3 = Tkinter.Entry(root, name="entry3") entry1.bindtags(('.entry1', 'Entry', '.', 'all')) entry2.bindtags(('Entry', '.entry2', '.', 'all')) entry3.bindtags(('.entry3','Entry','post-class-bindings', '.', 'all')) # Custom bindings are attached to the default tags entry1.bind("<KeyPress>", OnKeyPress) # Custom bindings are attached to the reordered tags entry2.bind("<KeyPress>", OnKeyPress) # Custom bindings are attached to the new 'post-class-bindings' tag entry3.bind_class("post-class-bindings", "<KeyPress>", OnKeyPress) root.mainloop()</code>
이 코드를 실행하고 세 개의 항목 위젯에서 키를 누르면 첫 번째 항목 위젯의 바인딩이 기본 바인딩 순서로 인해 한 문자 뒤쳐지는 것처럼 보이는 것을 알 수 있습니다. 그러나 두 번째 및 세 번째 항목 위젯에 대한 바인딩은 사용자가 입력하는 대로 텍스트를 올바르게 업데이트합니다.
위 내용은 Tkinter의 텍스트 위젯에서 텍스트 업데이트 후 사용자 정의 코드를 어떻게 실행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!