【Python/Tkinter】写真を点滅させる
PILをインストールする必要があります
PILで扱える画像の種類はbmp、tiff、gif、jpg、png、tiff、ppm、pgmです
PILがインストールされてない場合はpipでインストールしてください
>pip install Pillow
※参考URL
https://teratail.com/questions/191769
PythonでGUIに画像を表示する
https://water2litter.net/rum/post/python_tkinter_canvas_create_image/
円が動くアニメーションをつくるよ!after()でタイマーを作ろう!
https://python-channel.com/1370.html
ライブラリ:PIL
https://www.lifewithpython.com/2013/09/pil.html
import tkinter as tk from PIL import Image, ImageTk root = tk.Tk() root.geometry('800x560') root.title('IMG') class Photo(object): root = None canvas = None # dt=点滅間隔[msec] def __init__(self,id,dt): self.id= str(id) self.state = 'normal' self.dt = dt Photo.root.after(self.dt, self.blink) def blink(self): if self.state == 'normal': self.state = 'hidden' else: self.state = 'normal' self.canvas.itemconfigure(self.id, state=self.state) self.root.after(self.dt, self.blink) class Photo2(object): root = None canvas = None # dt=点滅間隔[msec] def __init__(self,id,dt): self.id= str(id) self.state = 'normal' self.dt = dt Photo2.root.after(self.dt, self.blink) def blink(self): if self.state == 'normal': self.state = 'hidden' else: self.state = 'normal' self.canvas.itemconfigure(self.id, state=self.state) self.root.after(self.dt, self.blink) rimg1 = Image.open('picture.png') img1 = ImageTk.PhotoImage(rimg1) # 表示するイメージを用意 canvas1 = tk.Canvas( root, # 親要素をメインウィンドウに設定 #scrollregion=tk.W, width=rimg1.width-20, # 幅を設定 height=rimg1.height-20, # 高さを設定 relief=tk.RIDGE, # 枠線を表示 borderwidth=10# 枠線の幅を設定 ) canvas1.create_image( # キャンバス上にイメージを配置 0, # x座標 0, # y座標 image=img1, # 配置するイメージオブジェクトを指定 tag="illust", # タグで引数を追加する。 anchor=tk.NW # 配置の起点となる位置を左上隅に指定 ) canvas1.pack(fill = 'none', side = 'left') Photo.root = root Photo.canvas = canvas1 root.a1 = Photo(1,500) rimg2 = Image.open('picture2.png') img2 = ImageTk.PhotoImage(rimg2) # 表示するイメージを用意 canvas2 = tk.Canvas( root, # 親要素をメインウィンドウに設定 width=rimg2.width-20, # 幅を設定 height=rimg2.height-20, # 高さを設定 relief=tk.RIDGE, # 枠線を表示 borderwidth=10# 枠線の幅を設定 ) canvas2.create_image( # キャンバス上にイメージを配置 0, # x座標 0, # y座標 image=img2, # 配置するイメージオブジェクトを指定 tag="illust2", # タグで引数を追加する。 anchor=tk.NW # 配置の起点となる位置を左上隅に指定 ) canvas2.pack(fill = 'none', side = 'left') Photo2.root = root Photo2.canvas = canvas2 Photo2(1,250) root.mainloop()