在tkinter中的类中单击事件

时间:2014-11-14 04:51:29

标签: python tkinter click

我正在尝试创建一个点击事件,以便轻松查看网格上的坐标。我一直在关注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"

2 个答案:

答案 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)