Моя цель состоит в том, чтобы изменить текст этикетки виджет, когда перемещение мыши над label.For одной меткой я бы сделать что-то вроде этого:Python Tkinter ярлык виджет мыши над
import Tkinter as tk
def fun1(event):
label.config(text="Haha")
def fun2(event):
label.config(text="Label1")
root=tk.Tk()
label=tk.Label(root,text="Label1")
label.grid(row=1,column=1)
label.bind("<Enter>", fun1)
label.bind("<Leave>", fun2)
root.mainloop()
Но теперь у меня есть кучу меток, создаваемых для цикла, и список, содержащий текст, который я хочу изменить.
mylist=['a','b','c','d','e']
for i in range(5):
tk.Label(root,text="Label"+str(i)).grid(row=i+1,column=1)
Это сгенерирует 5 ярлыков с цифрами. Можно ли добавить событие мыши для каждого отдельного ярлыка, чтобы при наведении указателя мыши на метку 1 он менялся на «a», когда я наводил указатель на метку 2, он менялся на «b» и т. Д.? FYI, количество элементов в списке будет всегда совпадать с количеством, используемым в цикле for.
спасибо, что это работает! но не могли бы вы объяснить, что означает «x = x»? –
@ChrisAung Использует фактическую «x» итерации для функции лямбда. В противном случае для всех меток будет отображаться «e». –