Я делаю ткинтер gui и хочу, чтобы он работал так: у меня есть рамка, внутри рамки есть холст, а внутри холста есть несколько прямоугольников
Я хочу сделать если я наведу курсор мыши на прямоугольник, его цвет изменится с белого на зеленый простой, верно?
так что помогите мне понять, что не так
Вот класс:
class guiSong:
def __init__(self, master: tkinter.Canvas, songobject: SongFile, x, y, rect=None):
self.master = master
self.songobject = songobject
self.x = x
self.y = y
self.rect = rect
def on_enter(self, event):
self.master.itemconfig(self.rect, fill='green')
print("Should change to green rect ", str(self.rect))
def on_leave(self, enter):
self.master.itemconfig(self.rect, fill='white')
def display(self):
self.rect = self.master.create_rectangle(self.x, self.y, self.x + 1150, self.y + 150, fill='white', tags = ['playbutton',self.songobject])
print("Self Rect is "+str(self.rect)+"!!!!!!!!!!!!!!!!!!!!!!!")
self.master.tag_bind('playbutton',"<Enter>", self.on_enter)
self.master.tag_bind('playbutton',"<Leave>", self.on_leave)
self.albumimg = Image.open(BytesIO(self.songobject.albumimage))
self.albumimg = ImageOps.expand(self.albumimg,border=5)
self.albumimg = self.albumimg.resize((120, 120), Image.ANTIALIAS)
self.img = ImageTk.PhotoImage(self.albumimg)
make_image(self.img, self.x + 25, self.y + 15, self.master)
print(f"Creating image {str(self.img)} at x",self.x+25, " y ",self.y+15 )
return self.img
#self.master.create_image(self.x + 25, self.y + 15, anchor = tkinter.W,image=img)
Не беспокойтесь обо всех вещах, связанных с песенными объектами, которые не связаны
Я составил список этих объектов и отобразил их все внутри холста один за другим. Ожидаемый результат - когда я наведу курсор на прямоугольник, зеленый цвет, что происходит в действительности, это то, что только последний созданный прямоугольник окрашивается, когда он находится над любым прямоугольником.