如果代码在方法中,Canvas 将不会显示 PhotoImage 图片

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

任何帮助,将不胜感激。


料青山看我应如是
浏览 161回答 1
1回答

拉风的咖菲猫

正如 martineau 在上面的评论中所解释的,代码的问题是 img 变量仅在函数处理时存在,它在函数返回后被删除,并且需要我保留对图像对象的引用。将其设为全局变量可以纠正该问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python