为什么将键绑定到 Entry 小部件不起作用?

Why binding a key to Entry widget doesn't work?

大家好,我正在尝试简单地创建一个文本 space 来替换字母或星号中的任何输入,就像使用常规密码一样。但是为什么如果我将任何键绑定到功能“文本”,如果我按下任何键,第一个输入是空的?因为如果我在函数 i print(e.get()) 中键入“m”,控制台中的输出为空?为什么它会忽略输入以及如何简单地在文本区域中显示星号并将普通密码绑定到变量“a”,就像在我的代码中一样?使用 e.delete 和 e.insert 我只是删除最后一个字符并将其替换为星号这是我的代码

from tkinter import  *
a = ""
window = Tk()
def entra():
    global a
    if a == "cgf":
        print ("a")
    else:
        print("noo")
def text (event):
    global a
    a = a + e.get()
    print(e.get())
    e.delete(len(e.get()) - 1)
    e.insert(END, "*")
e = Entry(window, borderwidth=3, width=50, bg="white", fg="black")
e.place(x=100, y=35)
e.bind("<Key>", text)
bottone_entra = Button (window, text = "Entra", borderwidth=2.5,command = entra)
bottone_entra.place (x=100, y=65)
etichetta = Label(window, text = "PASSWORD", bg = "#2B2B2B", fg = "white")
etichetta.place(x=97.5, y=10)
window.geometry ("500x500")
window.title ("Password")
window.configure(bg = "#2B2B2B")
window.mainloop()

您不必手动为其构建逻辑,幸运的是 tkinter 已经提供了它。您只需要为条目小部件设置一个额外的选项,show='*':

e = Entry(window, borderwidth=3, width=50, bg="white", fg="black", show='*')

为什么你应该避免building/using你自己的这种逻辑有很多原因,首先,一旦你这样做get(),你只会得到****而不是任何东西原来的文字是。