Tkinter PhotoImage在一堂课中没有表现出来

时间:2015-11-12 21:31:07

标签: python tkinter photoimage

我有一个按钮,显示一个带有图片标签的新框架。标签和图像与所有教程中的完全一样,但图片并未显示。这是一个.gif。我究竟做错了什么? 这是我的代码:

from Tkinter import *

class Main(object):
    def __init__(self, root):
        self.f1=Frame(root)
        self.f1.grid()
        b1=Button(f1, command=self.photo, text="Picture")
        b1.grid()

    def photo(self):
        self.f1.destroy()
        self.f2=Frame(root)
        self.f2.grid()
        self.img1=PhotoImage("CO2_Levels.gif")
        self.l3=Label(self.f2, image=self.img1)
        self.l3.image=self.img1
        self.l3.grid()

root=Tk()
app=Main(root)
root.mainloop()

2 个答案:

答案 0 :(得分:0)

默认的第一个参数是图像的名称。如果要为其指定文件路径,则需要在路径前指定file=,以便PhotoImage知道它是文件的路径而不是图像的名称。

self.img1=PhotoImage(file="CO2_Levels.gif")

答案 1 :(得分:0)

我知道这是一个老问题。但是如果有人遇到同样的问题,这是因为当你从函数返回时,图像会被垃圾收集。为避免这种情况,您应该保留对图像对象的引用。你的照片方法,

def photo(self):
    self.f1.destroy()
    self.f2=Frame(root)
    self.f2.grid()
    self.img1=PhotoImage("CO2_Levels.gif")
    self.l3=Label(self.f2, image=self.img1)
    self.l3.image = self.img1 # Reference to the image object  
    self.l3.image=self.img1
    self.l3.grid()

来源:http://effbot.org/tkinterbook/photoimage.htm