方案简介:
    此方法将ImageTk.PhotoImage处理放入类中,通过类生成对象然后再存放列表,可以成功显示。

    实际操作:
    1、从文件夹导入多张图片,创建tkinter窗口+画布。

    1. import tkinter as tk
    2. from PIL import Image, ImageTk
    3. import os
    4. """ 从文件夹内导入图片名称列表 """
    5. imageNameList = os.listdir("./素材/拼图/")
    6. for i in imageNameList:
    7. if 'png' not in i:
    8. imageNameList.remove(i)
    9. # 筛选删除列表中不是png格式的文件(mac系统会自动创建.Dstore隐藏文件)
    10. """ 创建窗口和画布 """
    11. window = tk.Tk()
    12. window.geometry("900x200")
    13. window.title("Test")
    14. canvas = tk.Canvas(window, width=1000, height=200)
    15. canvas.pack()
    16. window.mainloop()

    2、创建一个类,用于进行图片的ImageTk.PhotoImage处理。

    1. """ 创建用来进行存放PhotoImage读取图片的类 """
    2. class load_image:
    3. def __init__(self, image):
    4. self.image = image
    5. self.img = ImageTk.PhotoImage(self.image)
    6. photo.append(self.img)

    3、循环调用类来将进行两次处理的图片对象放入列表中

    1. """ 循环调用类来导入图片到列表 """
    2. photo = []
    3. for img in imageNameList:
    4. img=Image.open("./素材/拼图/"+img).resize((80,80))
    5. #先进行针对图片路径的Image.open操作
    6. load_image(img)
    7. #再用类进行针对已读取图片对象的PhotoImage操作
    8. print(photo)
    9. #看看列表是否成功导入

    4、循环便利图片对象列表,显示图片。

    1. """ 循环显示图片 """
    2. imgX = 50
    3. imgY = 100
    4. for i in photo:
    5. canvas.create_image(imgX,imgY,image=i)
    6. imgX += 100

    5、最终代码+效果参考。

    1. import tkinter as tk
    2. from PIL import Image, ImageTk
    3. import os
    4. """ 从文件夹内导入图片名称列表 """
    5. imageNameList = os.listdir("./素材/拼图/")
    6. for i in imageNameList:
    7. if 'png' not in i:
    8. imageNameList.remove(i)
    9. # 筛选删除列表中不是png格式的文件(mac系统会自动创建.Dstore隐藏文件)
    10. """ 创建窗口和画布 """
    11. window = tk.Tk()
    12. window.geometry("900x200")
    13. window.title("Test")
    14. canvas = tk.Canvas(window, width=1000, height=200)
    15. canvas.pack()
    16. """ 创建用来进行存放PhotoImage读取图片的类 """
    17. class load_image:
    18. def __init__(self, image):
    19. self.image = image
    20. self.img = ImageTk.PhotoImage(self.image)
    21. photo.append(self.img)
    22. """ 循环调用类来导入图片到列表 """
    23. photo = []
    24. for img in imageNameList:
    25. img=Image.open("./素材/拼图/"+img).resize((80,80))
    26. load_image(img)
    27. print(photo)
    28. """ 循环显示图片 """
    29. imgX = 50
    30. imgY = 100
    31. for i in photo:
    32. canvas.create_image(imgX,imgY,image=i)
    33. imgX += 100
    34. window.mainloop()

    image.png
    代码+素材文件:Show PhotoList (2).zip