tkinter の提供する afterメソッドで ミリ秒後に実行ができるので、
交互に表示・非表示を繰り返すと実現できます。
python
1#!/usr/bin/env python3.8
2
3import tkinter as tk
4
5root = tk.Tk()
6image = tk.PhotoImage(file="test.png") # ファイル test.png を準備
7label = tk.Label(root, image=image) # イメージを表示するウィジェットを準備(他にも方法あり
8label.pack()
9
10def showImage():
11 label.config(image=image) # イメージを設定
12 root.update_idletasks() # configにより変更した設定を反映
13 root.after(200, hideImage) # 0.2秒後に非表示
14
15def hideImage():
16 label.config(image=None)
17 root.update_idletasks()
18 root.after(1500, showImage) # 1.5秒後に表示
19
20root.geometry("600x600")
21root.after_idle(showImage)
22root.mainloop()
23
要点・注意点:
- 「after メソッド」で ミリ秒後に関数を実行。
- config 変更後の GUI の反映は、「update_idletasks」 を呼ぶ。
- その際にウィジェットのサイズが変わり、レイアウトが崩れることもあるので
不都合がある場合は、同じ縦横サイズのダミー画像への表示切り替えも検討してください。
- キャンバスへの描画ではウィジェットのサイズ変更によりレイアウトが崩れることは有りません。
- 画像ファイルの対応フォーマット(GIF, PNG等)や、
表示の仕方(ラベル・ボタンのアイコンやキャンバスに描画)は複数あるので別途調べてください。
- JPEG ファイルの場合は、外部の画像処理ライブラリ(Pillow)のインストールが必要です。
また、アニメーションGIFの動画部分には未対応。独自にアニメーション処理を実装する必要あり。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/30 01:45