【发布时间】:2016-12-01 20:15:12
【问题描述】:
我在 python 中创建了一个扩展 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参数。)不确定它是否重要,但你使用的是什么 python 版本? -
真的吗?我正在使用 python 3.5 和 Pycharm,它为我运行,但我只是没有按预期工作
-
你的意思是类头class mycanvas()缺少self参数吗?
-
不,回调需要
self。 -
不要在连接时调用回调。那应该是
self.bind("<Button-1>", self.callback)在callback之后没有括号。