我有两幅油画(元素):
self.canvas1
self.canvas2当鼠标something()将悬停在画布上时,我希望它们执行操作。
所以我用bind('<Enter>')把它连接起来
self.canvas1.bind('<Enter>', something)
self.canvas2.bind('<Enter>', something)在something()中,它将尝试将画布配置为红色背景颜色,因此:
def something(event):
canvas.configure(background='red')棘手的部分是,函数something如何知道它应该将背景色更改为哪个画布?
发布于 2018-10-22 14:40:20
事件对象有一个widget属性,它引用生成事件的小部件。你可以用这个。
event.widget.configure(background="red")无论出于什么原因,如果您不想这样做,您可以创建一个匿名函数来保持小部件变量的闭包,然后可以将它作为参数直接传递给您的函数。
self.canvas1.bind('<Enter>', lambda event: something(self.canvas1))
#or possibly*
self.canvas1.bind('<Enter>', lambda event, canvas1=self.canvas1: something(canvas1))在这种情况下,您必须将something函数的参数更改为def something(widget):。
(*只有在循环中绑定时,canvas1=self.canvas1才是必需的,就像在Tkinter assign button command in loop with lambda中那样)
https://stackoverflow.com/questions/52931928
复制相似问题