我是Python新手,这是我第一次使用tkinter。 我尝试创建一个事件,如果按下Enter键,我的函数被称为传入参数(在本例中,我希望传入entry小部件)。 下面是我的代码的简化版本:
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()
这里的事件运行得很好,但是当我试图传递参数时遇到了问题。我试过了
^{pr2}$并获取错误名称错误:未定义全局名称“self”
我也试过了
def checkPassword(self,event,param):
# do stuff
import functools
Entry.bind("<KeyRelease-Return>", functools.partial(checkPassword, param=Entry))
但是get TypeError:checkPassword()缺少1个必需的位置参数:“event”
这两个问题我都解决不了,我已经在这里看过类似问题的解决方案,但是我的代码中没有任何一个可以使用。在
Kevin的回答对于包含数据和事件实例的一般问题是正确的,但是当额外的数据是导致事件的小部件时,这个答案是多余的。事件最多有17 attributes,包括
.widget
,该小部件是事件的源。(我强烈推荐包含上述链接的tkinter引用。)当return
被点击时,下面将打印条目小部件的内容。在您的第二次尝试很接近,但是由于
checkPassword
不是类方法,因此不应该在它前面加上self.
。在相关问题 更多 >
编程相关推荐