我正在嘗試為我創建一個鍵綁定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 _:
添加回答
舉報
0/150
提交
取消