Python使用tkinter显示图片(png、jpg)

使用tk原生写法,只能显示gif图片,网上有些人居然搞jpg,png的后缀.还贴图可以实现,简直坑!!!

原生写法:(不推荐)

1
2
img = tkinter.PhotoImage(file = 'test.gif')
label_img = tkinter.Label(root, image = img)

 

为了显示jpg,png的图片我搜索到了下面demo1的方法,   

如果要加载png,jpg的图片要使用PIL模块 ( from PIL import Image, ImageTk )

将图片重新编码,达到可以执行的目的.

demo1:

1
2
3
4
5
6
7
8
9
import tkinter
from PIL import Image, ImageTk
 
img = Image.open('./code.jpg')
w = tkinter.Tk()
photo = ImageTk.PhotoImage(img)
image_Label = tkinter.Label(w, image=photo)
image_Label.pack()
w.mainloop()  

在实际过程中,我的图片是从外部获取来的,并不是一开始就存在的,

debug调试的时候正常,运行的时候不正常,搞了老半天......

结果是函数结束的时候,变量被回收了,

图片显示不出来.加上global 解决!!!

demo2:

   

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import WX
import tkinter
from PIL import Image, ImageTk
 
 
def btn():
    global photo  # 函数运行结束就被回收了,会显示的是空白
 
    img_byte = wx.get_code()
    wx.save_img(img_byte)  # 保存图片
    img = Image.open('.\\code.jpg')
    photo = ImageTk.PhotoImage(img)
    image_Label = tkinter.Label(w, image=photo)
    image_Label.grid(row=0, column=1)
 
 
if __name__ == '__main__':
    wx = WX.Scrapy()
    w = tkinter.Tk()
    btn = tkinter.Button(w, text='获取验证码', command=btn)
    btn.grid(row=0, column=0)
    w.mainloop()

最后还是感谢,写了下面帖子的人,指引了我正确的方向.

 

参考文献: https://blog.csdn.net/qq_28888837/article/details/113716814

参考文献: https://wenku.baidu.com/view/4973b277834d2b160b4e767f5acfa1c7aa0082d2.html

posted @   还是张先森  阅读(13235)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示