我是Python的新手,这是我第一次使用tkinter。我正在尝试创建一个事件,如果按下Enter键,则该函数称为传递参数(在这种情况下,我想传递输入小部件)。这是我的代码的简化版本:
def checkPassword(event):
# do stuff
from tkinter import *
import tkinter.messagebox as box
window = Tk()
window.title('Booking System')
frame = Frame(window)
Entry = Entry(frame)
Entry.bind("<KeyRelease-Return>", checkPassword)
Entry.pack()
frame.pack()
window.mainloop()
这里的事件运行良好,但是当我尝试传递参数时遇到了问题。我试过了
def checkPassword(self, event):
# do stuff
Entry.bind("<KeyRelease-Return>", lambda event: self.checkPassword(event, Entry))
并得到错误NameError:未定义全局名称'self'
而且我也尝试过
def checkPassword(self,event,param):
# do stuff
import functools
Entry.bind("<KeyRelease-Return>", functools.partial(checkPassword, param=Entry))
但是得到TypeError:checkPassword()缺少1个必需的位置参数:'event'
我似乎无法修复其中任何一个,我在这里查看了类似问题的解决方案,但无法让其中任何一个与我的代码一起使用。
您的第二次尝试已经结束,但是由于checkPassword
它不是类方法,因此您不应在它前面加上self.
。
def checkPassword(event, some_value_you_want):
# do stuff
Entry.bind("<KeyRelease-Return>", lambda event: checkPassword(event, name_of_your_entry_widget))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句