[英]Python Tkinter - Text widget runnig function before inserting key
按下鍵后,我正在嘗試執行 function。 問題是如果我使用這段代碼:
text = tk.Text(root)
text.bind("<KeyPress>", lambda event:print(text.get(1.0, tk.END)))
text.pack()
當我按下第一個鍵時,沒有打印任何內容。 它在插入字符之前執行我的功能,我該如何避免呢? Whitout 使用<KeyRelease>
謝謝!
一種簡單的技術是使用after_idle
運行您的代碼,這意味着它在mainloop
處理完所有未決事件時運行。
這是一個例子:
import tkinter as tk
def do_something():
print(text.get("1.0", "end-1c"))
root = tk.Tk()
text = tk.Text(root)
text.bind("<KeyPress>", lambda event: root.after_idle(do_something))
text.pack()
root.mainloop()
要更深入地解釋為什么您的綁定似乎比您鍵入的內容滯后一個字符,請參閱問題Basic query regarding bindtags in tkinter 的答案。 該問題詢問的是Entry
小部件,但綁定機制對於所有小部件都是相同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.