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 相关文章推荐
Python3中多线程编程的队列运作示例
Apr 16 Python
Python实现递归遍历文件夹并删除文件
Apr 18 Python
Python的时间模块datetime详解
Apr 17 Python
python实现xlsx文件分析详解
Jan 02 Python
Python合并多个Excel数据的方法
Jul 16 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
关于Tensorflow使用CPU报错的解决方式
Feb 05 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 Python
Python中的pprint模块
Nov 27 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
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
python多线程threading.Lock锁用法实例
2014/11/01 Python
python 爬取微信文章
2016/01/30 Python
Python实现感知机(PLA)算法
2017/12/20 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
keras中的History对象用法
2020/06/19 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
体育教师个人的自我评价
2014/02/16 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
2014年人事科工作总结
2014/11/19 职场文书
2014年电教工作总结
2014/12/19 职场文书
毕业论文致谢信
2015/05/14 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
让人瞬间清醒的句子,句句经典,字字如金
2019/07/08 职场文书