У меня не получается правильно передать данные об объекте на который я навожу мышь. Я составил код и максимально упростил его, чтобы осталась только эта проблема. Суть в том что я запускаю цикл, который при движении мыши вызывает функцию, которая перебирает словарь с объектами и если я навожу на один из них, то он передается в другую функцию. И не ругайтесь на глобальные переменные (т.к. я создал в основной программе 2 подкласса tkinter "Tk" и "Toplevel", я не нашел другого варианта как параллельно наследовать переменные подклассов) Запустите код и нажмите 2 и более раз на объект и посмотрите в консоль. Эту проблему я уже не могу решить более 5 часов, так что кому не сложно помогите пожалуйста...
from tkinter import *
current_k = 0
id_k_new = 0
id_k_last = 0
items_k = {}
class Window(Tk):
def __init__(self):
super().__init__()
self.geometry("500x500+200+0")
self.resizable(0, 0)
self.canvas = Canvas(self, width=573, height=561, highlightthickness=0)
self.canvas.place(x=0, y=0)
self.button = Button(self.canvas, text="click me", command=self.print_rectangle)
self.button.place(x=400, y=100)
self.bind('<Motion>', self.mouse_wheel_knop)
def mouse_wheel_knop(self, event):
global id_k_last
global items_k
global id_k_new
global current_k
for i in range(id_k_last):
current_k = i + 1
items_k["knop{}".format(i + 1)].bind("<Enter>", self.fun_nag)
def print_rectangle(self):
global items_k
global id_k_new
global id_k_last
id_k_new += 1
for i in range(id_k_last, id_k_new):
items_k["knop{}".format(i + 1)] = Canvas(self.canvas, width=150, height=30, highlightthickness=0)
items_k["knop{}".format(i + 1)].place(x=50, y=50 + 50 * i)
items_k["knop{}".format(i + 1)].create_rectangle(0, 0, 150, 30, outline="#fb0", fill="#fb0")
id_k_last += 1
def fun_nag(self, event):
global current_k
global id_k_last
print("Enter k it is:", current_k)
if __name__ == "__main__":
root = Window()
root.mainloop()