tkinter 加载jpg,png图像

在tk中会使用到给label或是button等加载图像时常会涉及到以下问题。

  问题:在使用tkinter加载图像时 如 photo = PhotoImage(file=‘xxx.jpg’),会出现TclError: couldn’t recognize data in image file “xxx.jpg”。

  原因:tkinter只支持gif格式,当加载图像为jpg或者png格式时需要通过PIL模块来实现(注意这里tk只看图像本来的格式:即如原本图像是jpg,即使把后缀改成了gif也不能识别。原本图像是gif,即使后来后缀改成了jpg也可以正常加载)。


1.安装python中操作图像的库-PIL(Python Image Library)

  现在的PIL已经被Pillow代替,所以安装Pillow就行。
  1) 通过pycharm安装。
  2) 通过pip直接安装。
  导入时仍然使用 PIL 就行。

2.借助PIL模块来加载jpg,png图片

  代码如图下:

from PIL import Image, ImageTk

# 通过PIL打开图片
img = Image.open('xxx.jpg')  
# 通过PIL来生成PhotoImage对象,即可正常加载
photo = ImageTk.PhotoImage(img)

3.以上都完成的情况下,显示图像大小的框,却没有图像内容。

  注意图像的引用是否被回收。
  若是被回收,记得保存PhotoImage对象。

4.组件(如button)既要显示文字又要显示图像

  注意使用 compound 选项,否则只会显示图像不显示文本。

选项含义
CENTER文字显示在图像上(重叠)
TOP图像显示在文本上方
BOTTOM图像显示在文本下方
LEFT图像显示在文本左方
RIGHT图像显示在文本右方
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

thomasyyu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值