Tkinter 文字小部件中的事件綁定順序
將事件綁定到Tkinter 文字時,重要的是要考慮綁定的順序已處理。預設情況下,首先處理小部件的綁定,然後處理類別綁定。
問題:在內容更改之前發生綁定
當自綁定在文字小部件的綁定之前調用。在這種情況下,widget的綁定改變了文字內容,過早觸發了自綁定。
解決方案:更改綁定順序
有多種方法可以調整綁定順序來解決此問題。
綁定順序更改的後果
重新排列綁定標籤:
引入附加綁定標籤:
範例程式碼
下面的程式碼示範了調整綁定順序的兩種方法:
<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中文網其他相關文章!