如何在清除现有图像后更新Tkinter中的新图像。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在清除现有图像后更新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()
答案
您可以使用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()
以上是关于如何在清除现有图像后更新Tkinter中的新图像。的主要内容,如果未能解决你的问题,请参考以下文章
PDFbox 1.7.0 - 如何在使用PDFBox添加新图像时保留现有图像?