清除现有图像后如何在Tkinter中更新新图像?

时间:2018-08-13 10:17:44

标签: python image tkinter

我在名为1.jgp和2.jpg的文件夹中有2张图像。我想编写一个python代码,在2秒的延迟后,在窗格的相同位置一个接一个地显示所有图像。我试图用图像2.jpg一个接一个地添加相同的代码,但是它不起作用。在显示并清除1.jpg之后,我需要在此代码中进行哪些更改才能显示图像2.jpg。 我尝试了以下代码:

from tkinter import *
from PIL import Image, ImageTk
import time

root = Tk()
filename1="1.jpg"
filename2="2.jpg"
canvas = Canvas(width=800, height=800, bg='white')
canvas.pack()
image = Image.open(filename)
photo = ImageTk.PhotoImage(image)
canvas.create_image(250, 250, image=photo)
root.mainloop()

1 个答案:

答案 0 :(得分:1)

您可以在一段时间后使用Tkinter的after函数来调用函数。然后可以在画布上使用函数itemconfig来照顾图像的实际变化。

类似这样的东西:

from tkinter import *
from PIL import Image, ImageTk

class myGUI(object):
    def __init__(self):
        self.root = Tk()
        self.canvas = Canvas(width=800, height=800, bg='white')
        self.canvas.pack()

        filename="1.jpg"
        image = Image.open(filename)
        self.photo = ImageTk.PhotoImage(image)
        self.img = self.canvas.create_image(250, 250, image=self.photo)

        self.root.after(2000, self.change_photo)
        self.root.mainloop()

    def change_photo(self):
        filename = "2.jpg"
        image = Image.open(filename)

        self.photo = ImageTk.PhotoImage(image)
        self.canvas.itemconfig(self.img, image=self.photo)

if __name__ == "__main__":
    gui = myGUI()