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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南