2014-11-14 2 views
1

Я пытаюсь создать событие щелчка, чтобы легко видеть координаты на моей сетке. Я слежу за учебником effbot, но он не работает в моем классе. вот что у меня есть:событие click в классе в tkinter

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

click является методом класса Keyboard. Это означает, что всегда будет передан неявный первый аргумент (обычно называемый self), который является ссылкой на сам класс.

Вам нужно определить click так:

def click(self, event): 

В противном случае event получит аргумент в пользу self и аргумент, который должен быть для event будет в запасе.

Вот ссылка на self в Python: What is the purpose of self?

+0

благодарственное вы! Забудь глупую ошибку для меня. –

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)