tkinter显示图片

本文探讨了在Tkinter中如何正确处理png图片显示问题,介绍了两种方法:直接使用PhotoImage与PIL库结合。通过Image.open和ImageTk.PhotoImage解决了本地图片的编码显示,并揭示了解决局部变量导致空白显示的技巧——全局变量声明。
摘要由CSDN通过智能技术生成

tkinter显示图片

直接显示

import tkinter
root = tkinter.Tk()
img_gif = tkinter.PhotoImage(file = '1dpmw.gif')
label_img = tkinter.Label(root, image = img_gif)
label_img.pack()
root.mainloop()

但是上面的有一个问题,就是对于png这类图片显示不成功,会发现是空白,所以不推荐使用,因为只支持.gif一种形式。

用PIL加载显示

import tkinter
from PIL import Image, ImageTk
root = tkinter.Tk()
img_open = Image.open("2021-02-06_105510.png")
img_png = ImageTk.PhotoImage(img_open)
label_img = tkinter.Label(root, image = img_png)
label_img.pack()
root.mainloop()

注意和上面的区别,其实就是图片加载的方式由原来的img_gif = tkinter.PhotoImage(file = '1dpmw.gif') 变为现在的:

img_open = Image.open("2021-02-06_105510.png")
img_png = ImageTk.PhotoImage(img_open)

因为Image里面可以帮你解码,所以可以直接显示png。

上面显示是通过把图片放在label上面实现的,你也可以放到button或者canvas上面都是可以的。

图片显示空白

但你可能发现你在使用的时候,你的显示是空白,这里是因为你在开发的时候上面的一段话会写在一个函数里面封装起来,这个时候导致img_open是局部的,所以函数运行结束就被回收了,所以显示的是空白,解决方案也很简单,将这个变量声明为全局即可。

import tkinter
from PIL import Image, ImageTk
root = tkinter.Tk()
img_png =None
def func():
	img_open = Image.open("2021-02-06_105510.png")
	global img_png
	img_png = ImageTk.PhotoImage(img_open)
	label_img = tkinter.Label(root, image = img_png)
	label_img.pack()
func()
root.mainloop()
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值