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 相关文章推荐
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
Python的Django框架中settings文件的部署建议
May 30 Python
django使用图片延时加载引起后台404错误
Apr 18 Python
用生成器来改写直接返回列表的函数方法
May 25 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
python requests使用socks5的例子
Jul 25 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
python生成任意频率正弦波方式
Feb 25 Python
在python里创建一个任务(Task)实例
Apr 25 Python
虚拟机下载python是否需要联网
Jul 27 Python
Python 中random 库的详细使用
Jun 03 Python
Python实现生活常识解答机器人
Jun 28 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使用function_exists判断函数可用的方法
2014/11/19 PHP
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
详解Python中的文件操作
2016/08/28 Python
OpenCV 模板匹配
2019/07/10 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
Django ORM filter() 的运用详解
2020/05/14 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
去除python中的字符串空格的简单方法
2020/12/22 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
教师绩效考核方案
2014/01/21 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
项目建议书模板
2014/05/12 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
申报优秀教师材料
2014/12/16 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
高二英语教学反思
2016/03/03 职场文书