[英]Tkinter Entry/Text widget problem when I use bind function
我是 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()
有什么我不知道的奇怪规则吗? 任何和所有帮助都会很棒,提前致谢!
问题:
entry.bind("<KeyPress>"
似乎不是"同步" (当我在输出中键入"123"
时只有"12"
等等......),而root.bind("<KeyPress>"
有效。
事件entry.bind("<KeyPress>", ...
在tk.Entry
的值更新之前被触发。这解释了为什么输出总是落后一个字符。
事件root.bind("<KeyPress>", ...
在tk.Entry
的值更新后被触发。这解释了为什么这是有效的。
替代品:
"<KeyRelease>"
事件参考:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.