在tkinter显示图片需要进过Image.open和ImageTk.PhotoImage这两次处理,然后存放到列表,进行显示。

    1. def load_image():
    2. img = Image.open("LY大帅哥.png")
    3. img = ImageTk.PhotoImage(img)
    4. canvas.create_image(100, 100, image=img)

    但是会出现不显示的问题,我们只要给ImageTk.PhotoImage之后的变量进行一次global即可,非常简单。

    1. def load_image():
    2. global img
    3. img = Image.open("LY大帅哥.png")
    4. img = ImageTk.PhotoImage(img)
    5. canvas.create_image(100, 100, image=img)

    如果我们想要同时显示多张图片,用os.listdir导入多张图片到列表中。

    1. """ 从文件夹内导入图片名称列表 """
    2. imageNameList = os.listdir("./素材/拼图/")
    3. for i in imageNameList:
    4. if 'png' not in i:
    5. imageNameList.remove(i)
    6. # 筛选删除列表中不是png格式的文件(mac系统会自动创建.Dstore隐藏文件)

    然后我们循环遍历列表,去进行两次操作,然后显示,但是这样是显示不出来的。
    对图片对象进行global也是没有用,这样只会显示最后一张图片。

    可以参考一下三个方案,来解决tkinter多张照片不显示问题。
    方案一:class类读取图片(需要先学习class类的使用)
    方案二:存放字典+全局global(需要先学习字典的使用)
    方案三:引用画布canvas.photo(较为麻烦,仅供学习)
    方案四:存放列表(最简单)