在tkinter显示图片需要进过Image.open和ImageTk.PhotoImage这两次处理,然后存放到列表,进行显示。
def load_image():
img = Image.open("LY大帅哥.png")
img = ImageTk.PhotoImage(img)
canvas.create_image(100, 100, image=img)
但是会出现不显示的问题,我们只要给ImageTk.PhotoImage之后的变量进行一次global即可,非常简单。
def load_image():
global img
img = Image.open("LY大帅哥.png")
img = ImageTk.PhotoImage(img)
canvas.create_image(100, 100, image=img)
如果我们想要同时显示多张图片,用os.listdir导入多张图片到列表中。
""" 从文件夹内导入图片名称列表 """
imageNameList = os.listdir("./素材/拼图/")
for i in imageNameList:
if 'png' not in i:
imageNameList.remove(i)
# 筛选删除列表中不是png格式的文件(mac系统会自动创建.Dstore隐藏文件)
然后我们循环遍历列表,去进行两次操作,然后显示,但是这样是显示不出来的。
对图片对象进行global也是没有用,这样只会显示最后一张图片。
可以参考一下三个方案,来解决tkinter多张照片不显示问题。
方案一:class类读取图片(需要先学习class类的使用)
方案二:存放字典+全局global(需要先学习字典的使用)
方案三:引用画布canvas.photo(较为麻烦,仅供学习)
方案四:存放列表(最简单)