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 相关文章推荐
python线程池的实现实例
Nov 18 Python
使用Python构建Hopfield网络的教程
Apr 14 Python
Python入门_学会创建并调用函数的方法
May 16 Python
python与C互相调用的方法详解
Jul 14 Python
Python简单读取json文件功能示例
Nov 30 Python
解决PyCharm控制台输出乱码的问题
Jan 16 Python
django 中QuerySet特性功能详解
Jul 25 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
django中间键重定向实例方法
Nov 10 Python
django中media媒体路径设置的步骤
Nov 15 Python
python实现数据清洗(缺失值与异常值处理)
Dec 02 Python
python turtle 绘制太极图的实例
Dec 18 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+javascript液晶时钟
2006/10/09 PHP
php判断字符以及字符串的包含方法属性
2008/08/30 PHP
php笔记之:AOP的应用
2013/04/24 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
php操作access数据库的方法详解
2017/02/22 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
JS Array对象入门分析
2008/10/30 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
[00:35]可解锁地面特效
2018/12/20 DOTA
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
基于python时间处理方法(详解)
2017/08/14 Python
python线程中同步锁详解
2018/04/27 Python
在python中pandas的series合并方法
2018/11/12 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
html5录音功能实战示例
2019/03/25 HTML / CSS
高中数学教学反思
2014/01/30 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
教你用python实现一个无界面的小型图书管理系统
2021/05/21 Python