2016-07-27 88 views
0

我已经在python中创建了一个扩展tkinter画布的类。我正在尝试将一个事件附加到此画布上以处理类内的点击。它的功能,如果我附上事件的类本身之外,但在类中结合时,单击事件才发生的一次,然后继续不要做任何事情只有执行第一次点击:附加事件到自我(画布)tkinter

class myCanvas(Canvas): 
    def callback(event): 
     print('clicked at', event.x, event.y) 

    def __init__(self, parent, **kwargs): 
     Canvas.__init__(self, parent, **kwargs) 
     self.bind("<Button-1>", self.callback()) 
     self.height = self.winfo_reqheight() 
     self.width = self.winfo_reqwidth() 

绑定事件函数只有当我在课堂之外附加活动时才正确。任何帮助找到一种方法将事件附加到扩展画布将不胜感激。

+1

无法重现,完美无缺。 (“Perfectly fine”意思是每次点击时都会显示一个错误,因为它缺少'self'参数。)不确定它是否重要,但是您使用的是什么Python版本? –

+0

真的吗?我使用Python 3.5和Pycharm,它为我运行,但我只是不工作,因为我期望 – D3181

+0

你的意思是类头类mycanvas()缺少自我参数? – D3181

回答

1

的问题是在这条线:

self.bind("<Button-1>", self.callback()) 

您需要连接东西可调用(换句话说,一个函数)的事件。该功能被称为self.callback。如果您调用函数(self.callback()),那么您将返回值self.callback()连接到click事件而不是函数本身。