空白GUI与python图像幻灯片

时间:2012-02-18 01:36:15

标签: python image tkinter slideshow tk

我在播放幻灯片时显示图片时遇到问题。当注释掉update_image的前四行时,将显示第一个图像(1.png)。但是当它没有评论时,我得到一个空白的GUI。有人有什么建议吗?

    import Tkinter
    import Image, ImageTk

    class App():
        def __init__(self):
            self.root = Tkinter.Tk()
            image1=Image.open('C:\Users\Jason\Desktop\ScreenShots\\1.png')
            self.root.geometry('%dx%d' % (image1.size[0],image1.size[1]))
            tkpi=ImageTk.PhotoImage(image1)
            label_image=Tkinter.Label(self.root, image=tkpi)
            label_image.place(x=0,y=0,width=image1.size[0],height=image1.size[1])

            self.update_image()
            self.root.mainloop()


        def update_image(self):
            image1=Image.open('C:\Users\Jason\Desktop\ScreenShots\\2.png')
            tkpi=ImageTk.PhotoImage(image1)
            label_image=Tkinter.Label(self.root, image=tkpi)
            label_image.place(x=0,y=0,width=image1.size[0],height=image1.size[1])

            print 'slide'
            self.root.after(500, self.update_image)

    app=App()

1 个答案:

答案 0 :(得分:1)

可能发生的事情是您的图像对象正在收集垃圾,因为它是update_image范围的本地对象。尝试将图像对象保存为类的属性(例如:self.tkpi

顺便说一句 - 如果您正在进行幻灯片放映,一次只显示一个图像,则每次创建新图像时都没有理由创建新标签。创建新图像然后将其分配给现有标签图像就足够了。

我还建议您使用gridpack而不是placeplace在某些情况下很有用,但通常最好使用其他两个几何管理器。