当我停止在文本小部件中书写时,我想执行一个函数。所以我使用bind方法,但我没有找到一个事件去做我必须做的事情!
我这样做:
from tkinter import *
from tkinter import ttk
main = Tk()
main.resizable(width=False, height=False)
main.title("Test")
main.geometry("700x255")
entry = Text(main, wrap=WORD, relief=FLAT, font=helv36, padx=14, pady=15)
entry.place(x='20', y='50')
entry2 = Text(main, width=34, height=9, wrap=WORD, state=DISABLED, relief=FLAT, font=helv36, padx=14, pady=15)
entry2.place(x='380', y='50')
def traduire(event):
contents = entry.get(1.0, END)
entry2.config(state=NORMAL)
entry2.delete(1.0, END)
if var.get() == "Détecter la langue":
auto = translator.detect(contents)
try:
result = translator.translate(contents, src=auto.lang, dest=langue[var2.get()])
entry2.insert(END, result.text)
except ValueError:
pass
else:
result = translator.translate(contents, src=langue[var.get()], dest=langue[var2.get()])
entry2.insert(END, result.text)
entry2.config(state=DISABLED)
entry.bind('<KeyRelease>', traduire)
main.mainloop()
但是当我释放一个键时函数traduire是执行但我只想在我停止写文本时执行这个函数;)
感谢您的帮助!
答案 0 :(得分:0)
就像jasonharper在评论中建议的那样,在用户停止写文本后执行traduire
1s的一种方法是使用after
来安排在{1}中执行{1}}并取消执行如果按下另一个键,则使用traduire
。这样,after_cancel
实际上只有在用户没有按任何键1s时才会执行。
我的建议是将traduire
绑定到以下<KeyRelease>
函数:
stop_writing