我是Tkinter的新手,我想在输入时打印Entry的内容。 这是我尝试过的代码:
from tkinter import *
def get_(e):
print(entry.get())
root = Tk()
entry = Entry(root)
entry.pack()
entry.bind("<KeyPress>", get_)
mainloop()
但是它似乎不是“同步的”(当我输入“ 123”时,输出仅为“ 12”,依此类推)
以下代码可以正常工作,但我不知道为什么:
from tkinter import *
def get_(e):
print(entry.get())
root = Tk()
entry = Entry(root)
entry.pack()
root.bind("<KeyPress>", get_)
## or this: entry.bind("<KeyRelease>", get_)
## or this: entry.bind_all("<KeyPress>", get_)
mainloop()
有一些我不知道的怪异规则吗?任何帮助都将是美好的,在此先感谢您!
答案 0 :(得分:0)
问题:
entry.bind("<KeyPress>"
似乎不是“同步” (当我仅在输出中键入"123"
时是"12"
,依此类推...),而root.bind("<KeyPress>"
有效。
在{strong>之前更新entry.bind("<KeyPress>", ...
中的值之前触发事件tk.Entry
。这就解释了为什么输出总是落后一个个字符。
在{strong>之后更新root.bind("<KeyPress>", ...
中的值,触发事件tk.Entry
。这说明了为什么这样做。
替代:
"<KeyRelease>"
事件参考: