附加事件到自我(画布)tkinter
问题描述:
我已经在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()
绑定事件函数只有当我在课堂之外附加活动时才正确。任何帮助找到一种方法将事件附加到扩展画布将不胜感激。
答
的问题是在这条线:
self.bind("<Button-1>", self.callback())
您需要连接东西可调用(换句话说,一个函数)的事件。该功能被称为self.callback
。如果您调用函数(self.callback()
),那么您将返回值的self.callback()
连接到click事件而不是函数本身。
无法重现,完美无缺。 (“Perfectly fine”意思是每次点击时都会显示一个错误,因为它缺少'self'参数。)不确定它是否重要,但是您使用的是什么Python版本? –
真的吗?我使用Python 3.5和Pycharm,它为我运行,但我只是不工作,因为我期望 – D3181
你的意思是类头类mycanvas()缺少自我参数? – D3181