python 实现在tkinter中动态显示label图片的方法


Posted in Python onJune 13, 2019

在编程中我们往往会希望能够实现这样的操作:点击Button,选择了图片,然后在窗口中的Label处显示选到的图片。那么这时候就需要如下代码:

from tkinter import *
from tkinter.filedialog import askopenfilename
 
def choosepic():
  path_=askopenfilename()
  path.set(path_)
  img_gif=Tkinter.PhotoImage(file='xxx.gif')
  l1.config(image=img_gif)
  
root=Tk()
path=StringVar()
Button(root,text='选择图片',command=choosepic).pack()
e1=Entry(root,state='readonly',text=path)
e1.pack()
l1=Label(root)
l1.pack()
root.mainloop

而由于tkinter只能识别gif格式的图片,如果我们要添加jpg或者png格式的图片的话就要借用PIL进行处理。这时候代码如下:

from tkinter import *
from tkinter.filedialog import askopenfilename
from PIL import Image,ImageTk
 
def choosepic():
  path_=askopenfilename()
  path.set(path_)
  img_open = Image.open(e1.get())
  img=ImageTk.PhotoImage(img_open)
  l1.config(image=img)

但这个时候会发现Label并没有如我们所期望的那样变化。

这时候我去网上查找了相关资料,在 https://stackoverflow.com/questions/14291434/how-to-update-image-in-tkinter-label 下看到了回答者给出的解决办法:

photo = ImageTk.PhotoImage(self.img)
self.label1.configure(image = photo)
self.label1.image = photo # keep a reference!

于是在他的启发下我将代码进行了修改,之后完美解决了问题。修改后函数部分的代码如下:

def choosepic():
  path_=askopenfilename()
  path.set(path_)
  img_open = Image.open(e1.get())
  img=ImageTk.PhotoImage(img_open)
  l1.config(image=img)
  l1.image=img #keep a reference

而由于本人才疏学浅,对于造成这种现象的原因尚不理解。不过那名外国回答者也给出了这样修改的原因,在 http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm 上对于为何要keep a reference做出了详尽的解释。

原文如下:

python 实现在tkinter中动态显示label图片的方法

以上这篇python 实现在tkinter中动态显示label图片的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
python绘制直方图和密度图的实例
Jul 08 Python
python列表,字典,元组简单用法示例
Jul 11 Python
Django中的FBV和CBV用法详解
Sep 15 Python
分享PyCharm的几个使用技巧
Nov 10 Python
python numpy数组复制使用实例解析
Jan 10 Python
Scrapy框架介绍之Puppeteer渲染的使用
Jun 19 Python
python 6行代码制作月历生成器
Sep 18 Python
Django生成数据库及添加用户报错解决方案
Oct 09 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
python执行js代码的方法
May 13 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 #Python
24式加速你的Python(小结)
Jun 13 #Python
Python button选取本地图片并显示的实例
Jun 13 #Python
对Python强大的可变参数传递机制详解
Jun 13 #Python
python 通过可变参数计算n个数的乘积方法
Jun 13 #Python
python 多线程对post请求服务器测试并发的方法
Jun 13 #Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 #Python
You might like
php下删除字符串中HTML标签的函数
2008/08/27 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
php简单提示框alert封装函数
2010/08/08 PHP
基于php 随机数的深入理解
2013/06/05 PHP
php 注册时输入信息验证器的实现详解
2013/07/05 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
vue项目实战总结篇
2018/02/11 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
element中的$confirm的使用
2020/04/26 Javascript
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
python实现滑雪者小游戏
2020/02/22 Python
基于Python实现视频的人脸融合功能
2020/06/12 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
我们的节日清明节活动总结
2014/04/30 职场文书
员工安全责任书范本
2014/07/24 职场文书
销售团队获奖感言
2014/08/14 职场文书
长城导游词300字
2015/01/30 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS