Right now I’ve four images in my app and I need for all them to blink five times and then to stay put in the frame for five seconds one after another from the first to the fourth. To do so I’m trying to create a function like this:
import tkinter as tk
from PIL import ImageTk, Image, ImageGrab
class Blinking(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.img_1_img = ImageTk.PhotoImage(Image.open('img_1.png'))
self.img_2_img = ImageTk.PhotoImage(Image.open('img_2.png'))
self.img_3_img = ImageTk.PhotoImage(Image.open('img_3.png'))
self.img_4_img = ImageTk.PhotoImage(Image.open('img_4.png'))
self.img_1_label = tk.Label(self, image=self.img_1_img, relief="solid")
self.img_1_label.pack(padx=50, side='left', anchor='w')
self.img_2_label = tk.Label(self, image=self.img_2_img, relief="solid")
self.img_2_label.pack(padx=50, side='left', anchor='w')
self.img_3_label = tk.Label(self, image=self.img_3_img, relief="solid")
self.img_3_label.pack(padx=50, side='left', anchor='w')
self.img_4_label = tk.Label(self, image=self.img_4_img, relief="solid")
self.img_4_label.pack(padx=50, side='left', anchor='w')
self.blink_img(self.img_1_label)
def blink_img(self, img):
for i in range(3):
i +=1
if i % 5 != 0:
self.img.after(500, self.blink_img)
self.img.after(1000, self.blink_img)
else:
# the image stay in the frame for five seconds, I print() something and then the next image start to blink
if __name__ == "__main__":
root = tk.Tk()
Blinking(root).pack(side="top", fill="both", expand=True)
root.mainloop()
But I’m getting this error:
AttributeError: 'Blinking' object has no attribute 'img'
It’s my first time trying to create a function like this. What am I doing wrong?