Я пишу класс, который создает холст и позиционирует элементы, содержащие заголовок, описание и значок.Все работает хорошо, кроме части показа значка.
Сам класс строит canvas
и у него есть метод для добавления элементов.
Проблема возникает, когда эта функция входит в класс.
def addElement(self, title='Element title', description='Element description' icon='*')
if self.elementnumber != 10:
self.elementnumber = self.elementnumber+1
else:
raise Exception("The maximum number of elements permitted is 10.")
element=Frame(self.iconframe.interior, name=str(self.elementnumber))
if icon != '*':
self.iconimage = PhotoImage(file=icon)
elementicon = Label(element, image=self.iconimage,name='icon')
else:
elementicon = Label(element, name='icon')
elementtitle = Label(element, text=title, name='title')
elementdescription = Label(element, text=description, name='description', wraplength=155,justify=LEFT)
Итак, когда я вызываю функцию и ставлю значок, если я ставлю self.
на iconimage
, я сохраняю ссылку и изображение отображается правильно, но только изображение для последнего элемента,Я знаю, что это потому, что self.
является ссылкой для основного класса, а не для элемента функции, поэтому этот элемент обновляется каждый раз, когда я вызываю функцию, оставляя только последний значок.
Но,если я вызываю функцию PhotoImage
без self.
, любое из изображений показывает это правильно.
Так что я не знаю, как это сделать, чтобы правильно отобразить изображения.