我正在尝试创建一个点击事件,以便轻松查看网格上的坐标。我一直在关注effbot教程,但它似乎不适用于我的班级。这就是我所拥有的:
class Keyboard(Frame):
def __init__(self, root, press):
Frame.__init__(self, root)
self.press = press
self.createWidgets()
self.bind("<Button-1>", self.click)
def click(event):
print("clicked at", event.x, event.y)
当我运行它并点击某处时,它会说:
"TypeError: click() takes 1 positional argument but 2 were given"
答案 0 :(得分:2)
click
是类Keyboard
的方法。这意味着它将始终传递一个隐式的第一个参数(通常称为self
),它是对类本身的引用。
您需要像这样定义click
:
def click(self, event):
否则,event
将收到self
的参数,而event
的参数将被遗留。
以下是Python中self
的参考:What is the purpose of self?
答案 1 :(得分:0)
您正在定义类函数click
,因此您必须将第一个参数作为self
类对象传递
所以请改变它
class Keyboard(Frame):
def __init__(self, root, press):
Frame.__init__(self, root)
self.press = press
self.createWidgets()
self.bind("<Button-1>", self.click)
def click(self, event):
print("clicked at", event.x, event.y)