Почему изображение Tkinter не отображается, если оно создано в функции?
этот код работает:
import tkinter
root = tkinter.Tk()
canvas = tkinter.Canvas(root)
canvas.grid(row = 0, column = 0)
photo = tkinter.PhotoImage(file = './test.gif')
canvas.create_image(0, 0, image=photo)
root.mainloop()
Он показывает мне изображения.
теперь этот код компилируется, но он не показывает мне изображение, и я не знаю, почему, потому что это тот же код, в классе:
import tkinter
class Test:
def __init__(self, master):
canvas = tkinter.Canvas(master)
canvas.grid(row = 0, column = 0)
photo = tkinter.PhotoImage(file = './test.gif')
canvas.create_image(0, 0, image=photo)
root = tkinter.Tk()
test = Test(root)
root.mainloop()
1 ответов
переменная photo
- локальная переменная, которая получает мусор, собранный после создания экземпляра класса. Сохраните ссылку на фотографию, например:
self.photo = tkinter.PhotoImage(...)
Если вы делаете поиск Google на "Tkinter изображение не отображается", первый результат таков:
http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm