猿问

键绑定导致功能在启动时自动运行

我正在尝试为我创建一个键绑定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是红色的,表明该函数已被调用,即使键绑定没有被激活。


HUH函数
浏览 84回答 1
1回答

慕姐4208626

你犯了一个很常见的错误。你的函数在你的程序执行时执行,因为你在你的.bind().解决此问题的一种方法是添加一个lambda.代码:def nameValidation(name, event = None):&nbsp; &nbsp; if PresenceCheck(name) and LengthCheck(name,2) and DataTypeCheck(name,str):&nbsp; &nbsp; &nbsp; &nbsp; print("Valid Name")&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; 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 _:
随时随地看视频慕课网APP

相关分类

Python
我要回答