使用绑定功能时,Tkinter条目/文本小部件问题

时间:2019-12-27 07:06:16

标签: python events tkinter tkinter-entry

我是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()

有一些我不知道的怪异规则吗?任何帮助都将是美好的,在此先感谢您!

1 个答案:

答案 0 :(得分:0)

  

问题entry.bind("<KeyPress>"似乎不是“同步” (当我仅在输出中键入"123"时是"12",依此类推...),而root.bind("<KeyPress>"有效。

在{strong>之前更新entry.bind("<KeyPress>", ...中的值之前触发事件tk.Entry。这就解释了为什么输出总是落后一个个字符。

在{strong>之后更新root.bind("<KeyPress>", ...中的值,触发事件tk.Entry。这说明了为什么这样做。

替代


参考