如果代码位于方法中,则画布不会显示照片图像图片



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()

任何帮助将不胜感激。

正如 Martineau 在上面的注释中解释的那样,代码的问题在于 img 变量仅在函数处理时存在,它在函数返回后被删除,并且需要我保留对图像对象的引用。使其成为全局变量可以纠正此问题。

非常感谢!

最新更新