Tkinter使用PIL导入图片不展示解决方法
tkinter中原生的加载图片方式,并不支持主流图片格式,要想加载jpg、png之类的,比较好的解决方式是使用PIL的Image, ImageTk模块来导入。
简单测试,在画布上添加一个图片,运行以下代码没有任何问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from tkinter import * from PIL import Image, ImageTk tk = Tk() canvas = Canvas(tk, width=500, height=500) img = Image.open("avatar.jpg") myPic = ImageTk.PhotoImage(img) canvas.create_image(0, 0, image=myPic, anchor="nw") canvas.pack(fill=BOTH, expand=True) tk.mainloop() 但是当我把加载图片相关的操作封装成一个函数时,再测试,图片已经不展示了,这操作令人费解。查了相关资料,说函数执行完毕后,内部的变量被回收释放了。需要将图片设置成全局变量,函数销毁后图片还在。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 from tkinter import * from PIL import Image, ImageTk def openimg(): img = Image.