前提・実現したいこと
Tkinterによって画像一覧を表示させたいです。
os.listdir
で画像パスを順に取得し、表示したいサイズにリサイズをかけてLabelに代入し,column,row
は変数で回しています。
ディレクトリは男女別、その中で人名別に分かれています。
特定人物の写真をすべて表示させたいです。
発生している問題・エラーメッセージ
Frame上に何も変化がありません。
画像ファイルパスをプリントさせたのでパスの指定は正しいかと思います。
該当のソースコード
Python
1 count=0 2 row_count=0 3 for file in os.listdir('./data/training/'+seibetu+'/'+r_name+'/'): 4 model_image_path = './data/training/'+seibetu+'/'+r_name+'/'+file 5 print(file,model_image_path)#画像のパスが正しいか確認 6 if file != '.DS_Store': 7 c=count % 3 #3列で表示 8 r=row_count 9 10 image = Image.open(model_image_path) 11 image = image.resize((160,120)) 12 m_image = ImageTk.PhotoImage(image) 13 14 model_image = tk.Label(frame_image, image=m_image,width=160,height=120) 15 model_image.grid(column=c,row=r) 16 17 count+=1 18 if c==2: 19 row_count+=1
frame_image
はcanvas
内に設置しています。(スクロールバーを使うため)
Python
1# Canvas Widget を生成 2canvas = tk.Canvas(frame,width=640) 3 4# Scrollbar を生成して配置 5bar = tk.Scrollbar(frame, orient=tk.VERTICAL) 6bar.pack(side=tk.RIGHT, fill=tk.Y) 7bar.config(command=canvas.yview) 8 9# Canvas Widget を配置 10canvas.config(yscrollcommand=bar.set) 11canvas.config(scrollregion=(0,0,640,1000)) #スクロール範囲 12canvas.pack(side=tk.LEFT, fill=tk.BOTH) 13 14# Frame Widgetを 生成 15frame_image = tk.Frame(canvas,bd=2,width=600) 16 17 18# Frame Widgetを Canvas Widget上に配置 19canvas.create_window((0,0), window=frame_image, anchor=tk.NW, width=canvas.cget('width'))
補足情報(FW/ツールのバージョンなど)
Python3.7.3
OpenCV4.10
Tkinter8.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。