前提・実現したいこと
Pythonでjpg画像を二枚表示し、ボタンでそれぞれ異なる画像を表示したいのです。
発生している問題・エラーメッセージ
コマンドボタンをクリックしたら上下の画像を違う画像に切り替えたいのでが、現在は上側の画像のみが変わります。 また一度使用した画像はリストから削除したのですが、うまく行きません。 flower = flowers.pop() で取り出してその画像ファイルは削除したいのですが、codingが良く分かりません。 一枚だけの画像だと上手く切り替わりますが、二画像だと画像fileがreturnで上手く引き渡せていないか、廃棄されてしまうのかもしれません。 宜しくお願い致します。
該当のソースコード
Python3.7.3
1import tkinter as tk 2import random 3from PIL import Image, ImageTk 4 5root = tk.Tk() 6root.geometry('300x500') 7 8flowers = ['カタバミ.jpg', 'カンパニューラ.jpg', 'クレオメ.jpg', 9 'クンシラン.jpg', 'ジキタリス.jpg', 'シューカイドウ.jpg', ] 10 11 12def select_img_file(): 13 flower = random.sample(flowers, 2) 14 photo_file = flower 15 photo_file = photo_file[0] 16 photo_file = flower 17 photo_file = photo_file[1] 18 19 return photo_file 20 21 22def push_next_button(event): 23 img_next = Image.open(select_img_file()) 24 img_next = ImageTk.PhotoImage(img_next) 25 label1.configure(image=img_next) 26 label1.photo = img_next 27 28 29# run時に一回だけ動作する 30img = Image.open(select_img_file()) 31img = ImageTk.PhotoImage(img) 32 33label1 = tk.Label(root, image=img) 34label1.place(x=40, y=30) 35 36label2 = tk.Label(root, image=img) 37label2.place(x=40, y=250) 38 39 40btn1 = tk.Button(root, text='次へ') 41btn1.place(x=50, y=450) 42btn1.bind("<1>", push_next_button) 43 44def destroy(): 45 root.destroy() 46 47btn2 = tk.Button(root, text='終わる', command=destroy) 48btn2.place(x=150, y=450) 49 50root.mainloop()
試したこと
変数をglobalにしたり、select_img_file(): を二つ作ったりしましたが、私の実力では解決できませんでした。
codeを変更したりしても、上下が入れ替わるくらいで、うまく行きませんでした。
補足情報(FW/ツールのバージョンなど)
開発環境はW10 x64、Visual Sutudio Codeを使用しております。
出来上がり図と必要画像を添付致します。画像はpyファイルと同じholderにあります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/09/12 10:15