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操作字典类型的常用方法(推荐)
May 16 Python
批量将ppt转换为pdf的Python代码 只要27行!
Feb 26 Python
Python中函数参数匹配模型详解
Jun 09 Python
Python 等分切分数据及规则命名的实例代码
Aug 16 Python
python获取网络图片方法及整理过程详解
Dec 20 Python
python绘制封闭多边形教程
Feb 18 Python
keras自定义损失函数并且模型加载的写法介绍
Jun 15 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
Python如何批量生成和调用变量
Nov 21 Python
Python读取ini配置文件传参的简单示例
Jan 05 Python
python 提取html文本的方法
May 20 Python
如何使用python包中的sched事件调度器
Apr 30 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下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
php 字符转义 注意事项
2009/05/27 PHP
php 无极分类(递归)实现代码
2010/01/05 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
2011/10/29 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
2017/04/12 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
jQuery返回定位插件详解
2017/05/15 jQuery
JS实现标签滚动切换效果
2017/12/25 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
Python写的一个简单监控系统
2015/06/19 Python
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
过程装备与控制工程专业求职信
2014/07/02 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android
SQL Server中的游标介绍
2022/05/20 SQL Server
MySQL数据库表约束讲解
2022/06/21 MySQL
Python软件包安装的三种常见方法
2022/07/07 Python