为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUH函数 2023-02-07 16:42:02
我正在尝试为我创建一个键绑定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是红色的,表明该函数已被调用,即使键绑定没有被激活。
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

你犯了一个很常见的错误。你的函数在你的程序执行时执行,因为你在你的.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 _:


查看完整回答
反对 回复 2023-02-07
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信