RayBae
RayBae

Reputation: 62

Tkinter changing image live after a given time

I currently have a listbox with the paths of dozens of images, when an element in the listbox is selected the image will be displayed in the middle of the gui.

My third image has 2 different looks to it so i wrote:

        #Third image
        elif (self.index==3):
            start = clock()
            self.label.configure(image=self.photo2[1])#first image
            if (start>2):
                self.label.configure(image=self.photo2[2])#second image

For now when the user clicks the third element it will first display the first image, then if reclicked after two seconds it will display the second image, so that works.

However, what I want is for my third image to automatically change after two seconds without reclicking. Is there a way to update an image live in tkinter or any ideas on what approach I could take?

Upvotes: 0

Views: 2268

Answers (1)

Adam Smith
Adam Smith

Reputation: 54173

This is a common pattern. You should use Tk.after to run a function that changes the image then schedules the next change.

def change_image(label, imagelist, nextindex):
    label.configure(image=imagelist[nextindex])
    root.after(2000, lambda: change_image(label, imagelist, (nextindex+1) % len(imagelist)))

Then call it once and let it do its thing forever.

root = Tk()
setup_your_stuff()
change_image(root.label, root.photo2, 0)

Upvotes: 2

Related Questions