How to bind all frame widgets to lt;#39;Enter#39;gt; event(如何将所有框架小工具绑定到lt;gt;事件)
本文介绍了如何将所有框架小工具绑定到<;>;事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在以下代码中,我希望将所有Frame1项绑定到<;‘Enter’>事件,但它不起作用。我的意思是canvar.ocus_set()不会生效。我如何解决我的问题?for w in frame1.winfo_children():
w.bind('<Enter>',canvas1.focus_set())
推荐答案
comment made by Lafexlos实际上会将您引向正确的方向。当您这样做时
w.bind('<Enter>', canvas1.focus_set())
调用canvas1.focus_set()
并使用此函数调用的返回值(即None
)绑定到事件。这不是您想要的,因为现在每次触发事件时,都会执行None
而不是canvas1.focus_set()
。
bind
函数。调用canvas1.focus_set()
的引用为canvas1.focus_set
。但是,使用
w.bind('<Enter>', canvas1.focus_set)
仍然不起作用。
这是因为bind
函数将事件对象传递给它所指定的函数,因此它将调用canvas1.focus_set(event)
而不是canvas1.focus_set()
。由于focus_set
不接受任何参数,因此此操作失败。
您可以通过两种方式修复此问题。您可以创建一个额外的函数,该函数接受一个事件对象,然后在没有参数的情况下调用canvas1.focus_set()
,然后将事件绑定到这个新函数。另一种选择是使用匿名"lambda"函数来执行相同的操作,如
w.bind('<Enter>', lambda e: canvas1.focus_set())
这样,lambda函数将事件对象接受为e
,但不会将其传递给focus_set
。
备注。<Enter>
事件是而不是当您按键盘上的<Enter>
事件被触发,并且伴随着当您用鼠标离开窗口小部件时的<Leave>
事件。这可能是您想要的,但它经常会导致混淆。
这篇关于如何将所有框架小工具绑定到<;>;事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何将所有框架小工具绑定到<;>;事件


猜你喜欢
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01