密钥绑定使函数在启动时自动运行



我正在尝试为我的Entry创建一个键绑定,它将用户输入的内容Entry中,然后调用一个函数。

我的代码:

def nameValidation(name):
if PresenceCheck(name) and LengthCheck(name,2) and DataTypeCheck(name,str):
print("Valid Name")
else:
nameEntry.configure(bg="red")
nameEntry = tk.Entry(root,textvariable=nameInput,bg="white",font=("Arial",28))
nameEntry.grid(row=2,column=2)
nameEntry.bind("<FocusOut>",nameValidation(nameInput.get()))

当我运行代码时,Entry显示为红色,表示该函数已被调用,即使未激活键绑定。

你犯了一个非常常见的错误。您的函数正在执行程序时执行,因为您在.bind()中用括号调用了它。

解决此问题的一种方法是添加一个lambda.

法典:

def nameValidation(name, event = None):
if PresenceCheck(name) and LengthCheck(name,2) and DataTypeCheck(name,str):
print("Valid Name")
else:
nameEntry.configure(bg="red")
nameEntry = tk.Entry(root,textvariable=nameInput,bg="white",font=("Arial",28))
nameEntry.grid(row=2,column=2)
nameEntry.bind("<FocusOut>", lambda: nameValidation(nameInput.get()))

希望这有帮助!


如注释中所述,如果需要匿名功能,请使用lambda: event。如果遇到错误,请使用lambda _:

相关内容

  • 没有找到相关文章

最新更新