我在播放幻灯片时显示图片时遇到问题。当注释掉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()
答案 0 :(得分:1)
可能发生的事情是您的图像对象正在收集垃圾,因为它是update_image
范围的本地对象。尝试将图像对象保存为类的属性(例如:self.tkpi
)
顺便说一句 - 如果您正在进行幻灯片放映,一次只显示一个图像,则每次创建新图像时都没有理由创建新标签。创建新图像然后将其分配给现有标签图像就足够了。
我还建议您使用grid
或pack
而不是place
。 place
在某些情况下很有用,但通常最好使用其他两个几何管理器。