为了账号安全,请及时绑定邮箱和手机立即绑定

Python 3 Tkinter 绑定事件识别哪个元素

Python 3 Tkinter 绑定事件识别哪个元素

四季花海 2021-07-09 18:11:09
我有两个画布(元素):self.canvas1self.canvas2something()当鼠标悬停在画布上时,我希望他们这样做。所以我使用以下方法连接它bind('<Enter>'):self.canvas1.bind('<Enter>', something)self.canvas2.bind('<Enter>', something)在something()它将尝试将画布配置为红色背景色,以便:def something(event):    canvas.configure(background='red')棘手的部分是,该函数如何something知道它想将其背景颜色更改为哪个画布?
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

事件对象有一个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仅当您在循环中绑定时才需要,如在循环中使用 lambda 的 Tkinter 分配按钮命令)


查看完整回答
反对 回复 2021-07-27
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信