python - 多个标签的 Tkinter 动态事件绑定
问题描述
尝试将事件绑定到 tkinter 中的多个文本标签。基本上,用户输入一个文本,该文本在文本输入中被重写,每个单词作为标签,这样当用户单击一个单词时,该单词就会被拾取。
def check_input():
user_input = text.get('1.0', END)
text.delete("1.0",END)
u = user_input.split()
tags = []
for i,j in enumerate(u):
tags.append('tag'+str(i))
text.tag_config("tag"+str(i), foreground="blue")
text.insert(END, j+" ", "tag"+str(i))
for t in tags:
text.tag_bind(t, "<Button-1>", lambda e:click(e, t))
循环遍历所有标签并尝试绑定点击事件不起作用,它只绑定到最后一个标签。如何将事件动态绑定到多个标签?
解决方案
您callback(e, t)
在绑定标签时调用。
相反,您应该使用 lambda 函数来传递正确的参数并将它们绑定到每个标签:
lambda event, t=t: callback(event, t)
推荐阅读
- android - 无法使用材质组件库设置按钮的背景颜色
- php - Yii2:如何为 checkboxList() 中的每个复选框分配一个 id
- linux - 如何根据一个简单的源列表编写一个通用的 makefile
- jms - MQException:MQJE001:尝试从队列中检索消息时完成代码“2”,原因“2033”
- function - POWERSHELL - 检查 samaccountname 是否存在,如果是,则使用不同的方法
- postgresql - 当原始 SQL 工作时,TypeORM 查询生成器返回空数组
- linux - 为什么我不能在 bash 中杀死一个进程?
- python-3.x - Separating elements returned by xpath with commas
- c++ - C++ 从元组中获取值
...> - c# - 如何将 IFormfile XML 数据转换为 .Net Core 中的列表