Canvas не будет отображать фотографию PhotoImage, если код находится в методе - PullRequest
0 голосов
/ 01 февраля 2019

Новичок в python и до сих пор в основном его любят, но эта проблема странная.Точно такой же код работает из корня, но не в методе.

Это не делает изображение:

from tkinter import *      
root = Tk() 

def draw():
    print("does not work")
    canvas = Canvas(root, width = 300, height = 300)      
    canvas.pack()      
    img = PhotoImage(file="Db.png")      
    canvas.create_image(20,20, anchor=NW, image=img)      

draw()
mainloop()  

Но это прекрасно работает:

from tkinter import *      
root = Tk() 

print("This works fine")
canvas = Canvas(root, width = 300, height = 300)      
canvas.pack()      
img = PhotoImage(file="Db.png")      
canvas.create_image(20,20, anchor=NW, image=img)      

mainloop()

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 01 февраля 2019

Как поясняет Мартино в комментариях выше, проблема с кодом заключается в том, что переменная img существует только во время обработки функции, она удаляется после возврата из функции, и требуется, чтобы я сохранил ссылку на объект изображения.Создание глобальной переменной исправляет проблему.

Большое спасибо!

...