the loop creates several labels as references
need to do hover effect. reduced function does not work. the text is initially just blue and the mouse does not respond

def labelhover(w,ev): if ev is "enter": w["fg"]="red" #w.configure(foreground="red") elif ev is "leave": w["fg"]="blue" # w.configure(foreground="blue") for u in urls: lbl = Label(frame1, text=u ,cursor="hand2" ,justify=LEFT ,wraplength=width-10 ) lbl.bind("<Enter>",labelhover(lbl,"enter")) lbl.bind("<Leave>",labelhover(lbl,"leave")) lbl.pack() lbl.bind("<Button-1>",lambda event,arg=j['adress']:openurl(event,arg)) 

    1 answer 1

    The bind method waits for a reference to a function, not the result of its call.

     import tkinter as tk def on_enter(event): event.widget.configure(fg="blue") def on_leave(event): event.widget.configure(fg="black") root = tk.Tk() l1 = tk.Label(root, text="Первая метка") l1.pack() l1.bind("<Enter>", on_enter) l1.bind("<Leave>", on_leave) l2 = tk.Label(root, text="Вторая метка") l2.pack() l2.bind("<Enter>", on_enter) l2.bind("<Leave>", on_leave) root.mainloop()