Попробуй правильно показать изображение в tkinter в метод класса - PullRequest
0 голосов
/ 05 декабря 2018

Я пишу класс, который создает холст и позиционирует элементы, содержащие заголовок, описание и значок.Все работает хорошо, кроме части показа значка.

Сам класс строит 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., любое из изображений показывает это правильно.

Так что я не знаю, как это сделать, чтобы правильно отобразить изображения.

1 Ответ

0 голосов
/ 05 декабря 2018

self.iconimage должен быть списком, и для каждого нового элемента вы должны управлять индексом этого списка.

Обновляя self.iconimage в списке, попробуйте использовать метод append при добавлении новых элементов.Затем в elementicon сообщите добавляемый новый элемент из списка self.iconimage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...