Python-如果在函数中创建Tkinter图像,为什么不显示?

发布于 2021-02-02 23:24:23

此代码有效:

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()
关注者
0
被浏览
181
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    该变量photo是一个局部变量,在实例化类后会获取垃圾。保存对照片的引用,例如:

    self.photo = tkinter.PhotoImage(...)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看