开发者社区> 问答> 正文

为什么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()

问题来源StackOverflow 地址:/questions/59386772/tkinter-shows-image-then-immediately-refreshes-itself-and-shows-blank-canvas

展开
收起
kun坤 2019-12-25 21:49:08 483 0
1 条回答
写回答
取消 提交回答
  • 变量photo是一个局部变量,它在类实例化之后被垃圾回收。保存对照片的引用,例如:

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

    如果你做一个谷歌搜索“tkinter图像不显示”,第一个结果是: http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm

    2019-12-27 10:06:59
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载