簡體   English   中英

Python Tkinter - 文本小部件在插入密鑰之前運行 function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM