Изображение кнопки не появляется, Tkinter - PullRequest
0 голосов
/ 20 января 2020

У меня сейчас проблема при попытке назначить изображения кнопкам в для l oop:

for index in range(16):
        b = tk.Button(button_frame, text = letter,image = tk.PhotoImage(file = letter+".png"),
                      command= self.letter_typed(letter, word_label))

        b.image = tk.PhotoImage(file = letter+".png")
        b.grid(row = index//4, column = index%4)

, где буква - это буква (строка) алфавита. У меня есть 26 PNG каждая для буквы алфавита, в этой функции я создаю только 16 кнопок с картинками букв. Проблема в том, что картинка не появляется, только пустой кейс, размер которого соответствует размеру картинки. Я знаю, что это как-то связано с python сборщиком мусора. Другое дело, я могу получить желаемый результат, но мне нужно вручную создавать каждый экземпляр PhotoImage, и я хотел бы избежать этого, если это возможно, также я должен упомянуть, что я делаю все это в классе, Спасибо за вашу помощь!

1 Ответ

1 голос
/ 20 января 2020

Вы не сохранили ссылку tk.PhotoImage, использованную в b = tk.Button(...). Также вы присвоили результат self.letter_typed(...) для command аргумент tk.Button.

Фиксированный код:

for index in range(16):
    tkimg = tk.PhotoImage(file=letter+'.png')
    b = tk.Button(button_frame, text=letter, image=tkimg,
                  command=lambda: self.letter_typed(letter, word_label))
    b.image = tkimg
    b.grid(row=index//4, column=index%4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...