首页 > 解决方案 > 多个标签的 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))

循环遍历所有标签并尝试绑定点击事件不起作用,它只绑定到最后一个标签。如何将事件动态绑定到多个标签?

标签: pythontkinter

解决方案


callback(e, t)在绑定标签时调用。

相反,您应该使用 lambda 函数来传递正确的参数并将它们绑定到每个标签:

lambda event, t=t: callback(event, t)

推荐阅读