按键绑定在 tkinter 中没有响应

Key binding not responding in tkinter

我正在尝试在两个 Entry 上绑定 <Return> 键事件,但验证码不起作用(没有显示错误,validate 函数只是不起作用'不适用)

这是入口初始化:

from tkinter import *

fi = Tk()
l_n = Entry(fi)
l_t = Entry(fi)
b1 = Button(fi, cursor="hand2", overrelief=GROOVE, text="Run", command=someUnrelatedFunction, state=DISABLED)

下面是支持将验证函数绑定到条目的代码:

l_n.bind("<Return>",lambda name='l_n':validate(name))
l_t.bind("<Return>",lambda name='l_t':validate(name))

最后,这是打包和验证函数:

l_n.pack()
l_t.pack()

def validate(name):
    global v1,v2,n,t
    if name=='l_n':
        v1=True
        s=l_n.get()
        n=int(s)
        l_n.delete(0,END)
    elif name=='l_t':
        v2=True
        s=l_t.get()
        t=float(s)
        l_t.delete(0,END)
    if v1==True and v2==True:
        b1.config(state=NORMAL)

这里有什么问题?

在 tkinter 中,当您进行绑定时,tkinter 本身会向保存事件信息的回调添加另一个参数。因此,当您尝试使用 lambda 传递参数时,您也应该考虑到这一点。

l_n.bind("<Return>", lambda event, name='l_n': validate(name))
l_t.bind("<Return>", lambda event, name='l_t': validate(name))