python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例


Posted in Python onFebruary 27, 2020

PyQt5图片显示控件QPixmap介绍

QPixmap类用于绘图设备的图像显示,它可以作为一个QPainterDevice对象,也可以加载到一个控件中,通常是标签或者按钮,用于在标签或按钮上显示图像

QPixmap可以读取的图像文件类型有BMP,GIF,JPG等

QPixmap类中常用的方法

方法 描述
copy() 从QRect对象复制到QPixmap对象
fromImage() 将QImage对象转换为QPixmap对象
grabWidget() 从给定的一个窗口小控件创建一个像素图
grabWindow() 在窗口创建数据的像素图
load() 加载图像文件作为QPixmap对象
save() 将QPixmap对象保存为文件
toImage() 将QPixmap对象转换为QImage对象

QPixmap的使用实例

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class QpixmapDemo(QWidget):
  def __init__(self,parent=None):
    super(QpixmapDemo, self).__init__(parent)
    self.setWindowTitle('QPixmap例子')

    layout=QVBoxLayout()

    lab1=QLabel()
    lab1.setPixmap(QPixmap('\images\python.jpg'))

    layout.addWidget(lab1)

    self.setLayout(layout)

if __name__ == '__main__':
  app = QApplication(sys.argv)
  demo =QpixmapDemo()
  demo.show()
  sys.exit(app.exec_())

效果如图

python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例

代码分析

在这个例子中,使用setPixmap()将图像显示在QLabel上

lab1=QLabel()
    lab1.setPixmap(QPixmap('\images\python.jpg'))

QImage与QPixmap区别

不同平台,依赖、存储不同

QPixmap依赖于硬件,QImage不依赖于硬件。

在X11, Mac 以及 Symbian平台上。

QImage: 因为它是存储在客户端,往QImage上绘图比较快,但显示它则比较慢。QPixmap: 具体实现是依赖于系统的,它是存储在服务器端,往QPixmap上绘图比较慢,但显示它则比较快。但在Windows平台上则是是一样的,因为它们都存储在客户端,并不使用任何的GDI资源,可能看起来并没有多大区别。

目前的Qt会把QPixmap都存储在graphics memory中,这明显是依赖硬件的。因此我们对QPixmap的使用需要格外注意。

那么Qt为什么要这么做呢?很简单,设计之初QPixmap就是用来加速显示的,例如我们在paint的时候用QPixmap就会比用其他类的效果好许多。

用处分工不同

QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,QImage主要是为图像I/O、图片访问和像素修改而设计的。

当图片小的情况下,直接用QPixmap进行加载,画图时无所谓,当图片大的时候如果直接用QPixmap进行加载,会占很大的内存,一般一张几十K的图片,用QPixmap加载进来会放大很多倍,所以一般图片大的情况下,用QImage进行加载,然后转乘QPixmap用户绘制。QPixmap绘制效果是最好的。

总结:

对于显示小图片时,可以用QPixmap进行加载,绘画图片。当绘画大图片时候,此时最好实现QImage进行加载,因为QImage本身主要是为图像I/O、图片访问和像素修改而设计的,它可以实现对图片旋转、缩放等。然后通过QPixmap实现绘图。

本文详细介绍了PyQt5图片显示控件QPixmap详细使用方法与实例,还包括PyQt5中QImage控件与QPixmap控件的区别,更多关于这方面的知识请查看下面的相关链接

Python 相关文章推荐
pyside写ui界面入门示例
Jan 22 Python
Python中声明只包含一个元素的元组数据方法
Aug 25 Python
Python实现数据库编程方法详解
Jun 09 Python
在pycharm中设置显示行数的方法
Jan 16 Python
对python周期性定时器的示例详解
Feb 19 Python
Python2与Python3的区别实例分析
Apr 11 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
python gdal安装与简单使用
Aug 01 Python
pytorch之ImageFolder使用详解
Jan 06 Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 Python
利用python绘制正态分布曲线
Jan 04 Python
python opencv通过按键采集图片源码
May 20 Python
python程序文件扩展名知识点详解
Feb 27 #Python
python读取多层嵌套文件夹中的文件实例
Feb 27 #Python
python统计文章中单词出现次数实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 #Python
Python如何使用OS模块调用cmd
Feb 27 #Python
You might like
优化PHP代码技巧的小结
2013/06/02 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
PHP _construct()函数讲解
2019/02/03 PHP
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
详解Vue.js 响应接口
2020/07/04 Javascript
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
解决pip install的时候报错timed out的问题
2018/06/12 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
python反编译学习之字节码详解
2019/05/19 Python
python将字母转化为数字实例方法
2019/10/04 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
好的自荐信的要求
2013/10/30 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
小学生暑假家长评语
2014/04/17 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
三峡大坝导游词
2015/01/31 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
职工食堂管理制度
2015/08/06 职场文书
Python打包为exe详细教程
2021/05/18 Python
javascript的var与let,const之间的区别详解
2022/02/18 Javascript