我是 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()
有什么我不知道的奇怪规则吗?任何和所有的帮助都会很棒,提前感谢!
最佳答案
Question:
entry.bind("<KeyPress>"
seems not "synchronous" (when I type"123"
in output only is"12"
and so on ...), whileroot.bind("<KeyPress>"
works.
事件entry.bind("<KeyPress>", ...
在 tk.Entry
中的值之前被解雇已更新。这解释了为什么输出总是后面一个字符。
事件root.bind("<KeyPress>", ...
在 tk.Entry
中的值之后被解雇已更新。这解释了为什么它有效。
替代方案:
- 使用
"<KeyRelease>"
事件 - tkinter-variable-trace-method
引用:
关于python - 当我使用绑定(bind)函数时,Tkinter Entry/Text 小部件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59497222/