使用tkinter显示"图库"中的图像?



这个想法是从一个目录(文件夹)中选择所有的图像,它将在Window通过tkinter中显示所有这些缩略图图像。

我能够找到所有的图像目录与while,如下面的代码,但我不能使它们全部自动显示。

是否有任何库或本机函数来创建这个"gallery"的图片吗?

from tkinter import *
from typing import Sized
from PIL import *
import os
import cv2
class Window(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.master = master
self.pack(fill=BOTH, expand=1)
load = Image.open("temporario/page0.png")
load.thumbnail((350,350))
render = ImageTk.PhotoImage(load)
img = Label(self, image=render)
img.image = render
img.place(x=50, y=50)

files = []
pasta = 'temporario'
for (diretorio, subpastas, arquivos) in os.walk(pasta):
files.extend(arquivos)
#print(pasta + '/' + files[2])

i = 0
while i <= 2:
dirImg = pasta + '/' + files[i]
loading = Image.open(dirImg)
loading.thumbnail((350,350))
renderiza = ImageTk.PhotoImage(loading)
i = i + 1
print(dirImg)
imagemA = Label(self, image=renderiza)
imagemA.image = renderiza
imagemA.place(x=350, y=50)

root = Tk()
app = Window(root)
root.wm_title("Tkinter window")
root.geometry("800x500")
root.mainloop()

谢谢你的提示,它起作用了!

代码如下:

from tkinter import *
from typing import Sized
from PIL import *
import os
import cv2

from PIL import Image, ImageTk
class Window(Frame):

def __init__(self, master=None):

Frame.__init__(self, master)
self.master = master
self.pack(fill=BOTH, expand=1)

render2 = ImageTk.PhotoImage(load2)
img2 = Label(self, image=render2, height=250, width=250)
img2.image = render2
img2.place(x=350, y=50)'''
files = []
path = 'temporario'
for file in os.listdir(path):
if file.endswith('.jpg') or file.endswith('.png'):
files.append(file)
print(file)


i = 0
while i <= (len(files))-1:
dirImg = path + '/' + files[i]
loading = Image.open(dirImg)
loading.thumbnail((350,350))
renderiza = ImageTk.PhotoImage(loading)            


i = i + 1
imagemA = Label(self, image=renderiza)
imagemA.image = renderiza
imagemA.grid(column=i, row=0, padx=5, pady=5)





root = Tk()
app = Window(root)
root.wm_title("Tkinter window")
root.geometry("800x500")
root.mainloop()

最新更新