PyQt5零基础入门(五)——QLabel显示图像

QLabel显示图像

  • 前言
  • 显示静态图片
  • 显示动态图

前言

QLabel是Qt库中的一个部件,通常用于显示文本或富文本文档。然而,QLabel也可以用来显示图像。

一种常见的使用QLabel显示图像的方法是使用QPixmap类。QPixmap可以从文件中接收图片,然后可以使用QLabel的setPixmap()函数将图片插入到标签中。同时,为了使图片适应标签的大小,可以通过设置图片自适应标签大小来间接修改图片尺寸。

然而,如果图像过大,直接用QLabel显示可能会出现有部分图像显示不出来的情况。这时,可以使用Scroll Area部件。将QLabel部件放到Scroll Area部件里面,将两个采用栅格布局,当图像超出了QLabel部件大小时,就会产生滑动杆,这样图像就可以都看到了。

显示静态图片

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sysclass Window(QWidget):def __init__(self):super(Window, self).__init__()label = QLabel(self)pixmap = QPixmap('test.png')label.setPixmap(pixmap)label.setScaledContents(True)h_layout = QHBoxLayout()h_layout.addWidget(label)self.setLayout(h_layout)if __name__ == "__main__":app = QApplication([])win = Window()win.show()sys.exit(app.exec())

在代码中

  • pixmap = QPixmap(‘test.png’):创建一个新的 QPixmap 对象,并尝试从名为 test.png的文件中加载图像。
  • label.setPixmap(pixmap):将标签的 pixmap 设置为先前加载的test.png 图像。
  • label.setScaledContents(True):设置标签以缩放其内容。这意味着如果图像比标签大,它会被缩小以适应标签;如果小,它会被放大。

运行结果如下:
在这里插入图片描述

显示动态图

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sysclass Window(QWidget):def __init__(self):super(Window, self).__init__()self.movie = QMovie()self.movie.setFileName('./test.gif')self.movie.jumpToFrame(0)self.label = QLabel()self.label.setMovie(self.movie)self.label.setAlignment(Qt.AlignCenter)self.start_btn = QPushButton('开始')self.pause_resume_btn = QPushButton('暂停')self.stop_btn = QPushButton('停止')self.speed_up_btn = QPushButton('加速')self.speed_down_btn = QPushButton('减速')self.start_btn.clicked.connect(self.control)self.pause_resume_btn.clicked.connect(self.control)self.stop_btn.clicked.connect(self.control)self.speed_up_btn.clicked.connect(self.control)self.speed_down_btn.clicked.connect(self.control)h_layout = QHBoxLayout()v_layout = QVBoxLayout()h_layout.addWidget(self.start_btn)h_layout.addWidget(self.pause_resume_btn)h_layout.addWidget(self.stop_btn)h_layout.addWidget(self.speed_up_btn)h_layout.addWidget(self.speed_down_btn)v_layout.addWidget(self.label)v_layout.addLayout(h_layout)self.setLayout(v_layout)def control(self):if self.sender() == self.start_btn:self.movie.start()elif self.sender() == self.pause_resume_btn:if self.pause_resume_btn.text() == '暂停':self.movie.setPaused(True)self.pause_resume_btn.setText('继续')elif self.pause_resume_btn.text() == '继续':self.movie.setPaused(False)self.pause_resume_btn.setText('暂停')elif self.sender() == self.stop_btn:self.movie.stop()self.movie.jumpToFrame(0)elif self.sender() == self.speed_up_btn:speed = self.movie.speed()self.movie.setSpeed(speed * 2)elif self.sender() == self.speed_down_btn:speed = self.movie.speed()self.movie.setSpeed(speed // 2)if __name__ == "__main__":app = QApplication([])win = Window()win.show()sys.exit(app.exec())

在代码中:

  • self.movie = QMovie(): 这行代码创建了一个新的 QMovie 对象,并将其赋值给 self.movie。QMovie是 PyQt5 中用于处理动画的类。
  • self.movie.setFileName(‘./test.gif’): 这行代码设置了要播放的GIF 文件的路径。在这里,文件路径是 ‘./test.gif’,意味着 GIF 文件位于与当前执行文件相同的目录下,文件名为test.gif。
  • self.movie.jumpToFrame(0): 这行代码将 GIF 动画跳转到第一帧。jumpToFrame方法接受一个参数,即要跳转到的帧的索引。在这里,索引是 0,表示跳转到 GIF 动画的第一帧。
  • self.label.setMovie(self.movie)是将先前创建的 QMovie 对象(self.movie)设置给 QLabel 对象(self.label)以在标签中播放动画。通过调用 setMovie 方法,将 self.movie 与 self.label 相关联,这样当self.label 显示时,它将播放 self.movie 指定的 GIF 动画。
  • 随后创建了多个用于控制GIF播放的按钮,使用self.sender识别按下的按钮并调用self.move中的方法操作GIF的播放

运行结果在这里只贴了一个静态图,具体运行请读者自行执行体验
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年WebGIS开发三维面试题及答案解析

​前言 简介 面试之前 面试流程 自我介绍 1 面试简介 1 、首先做一个简单的自我介绍 2 、在公司/学习中做了什么样的项目? 在项目中参与哪些模块?重点介绍做了哪些功能? 3 、用户名/密码传输给后台的时候是加密传输还是明文传输 4 、token如何校…

多模态、长文本、智能体,智谱AI推出GLM-4模型全家桶,发布即上线

2024年01月16日,智谱AI首届技术开放日(Zhipu DevDay)在北京中关村国家自主创新示范区展示中心成功举办。现场,智谱AI团队全面展示了其投身于大模型事业三年多来所积累的技术成果,并重磅发布了新一代基座大模型GLM-4。 此次GLM-4的发布及上线&…

C#调用Newtonsoft.Json将bool序列化为int

使用Newtonsoft.Json将数据对象序列化为Json字符串时,如果有布尔类型的属性值时,一般会将bool类型序列化为字符串,true值序列化为true,false值序列化为false。如下面的类型序列化后的结果如下: public class UserInfo…

开源图床LightPicture搭建本地图片管理系统并实现无公网IP远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进,功能也越来越多,而手机…

OSI七层协议和五层协议

【 1 】互联网协议交互的基础 硬件设备 光缆 【 2 】OSI七层协议 物理层(Physical Layer):负责传输比特流(0和1)以及物理连接的建立和维护。数据链路层(Data Link Layer):提供可…

掌握Spring MVC拦截器整合技巧,实现灵活的请求处理与权限控制!

拦截器 1.1 拦截器概念1.2 拦截器入门案例1.2.1 环境准备1.2.2 拦截器开发步骤1:创建拦截器类步骤2:配置拦截器类步骤3:SpringMVC添加SpringMvcSupport包扫描步骤4:运行程序测试步骤5:修改拦截器拦截规则步骤6:简化SpringMvcSupport的编写 1.3 拦截器参数1.3.1 前置处理方法1.3…

操作系统课程设计-内存管理

目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 步骤 3.2 关键代码 3.2.1 显示虚拟内存的基本信息 3.2.2 遍历当前进程的虚拟内存 4 实验结果与分析 5 代码 前言 本实验为课设内容,博客内容为部分报告内容,仅为大家提供参考,请勿直…

【计算机网络】【新加坡南洋理工大学】【Computer Control Network】【广域网和局域网简介】【中英对照(自译)】

一、说明 仅供学习使用。 二、广域网(WAN)和局域网(LAN)简介

思瑞浦与IAR携手共筑嵌入式开发新生态--AMEYA360

2024年1月18日思瑞浦与IAR联合宣布,IAR旗舰产品IAR Embedded Workbench for Arm已全面支持思瑞浦TPS32混合信号微控制器主流系列产品,为开发者提供更完整、高效的开发解决方案。 思瑞浦总部位于中国,提供模拟及嵌入式处理器产品和解决方案&am…

腊八与健康,探寻羊奶与腊八渊源的奥秘

腊八与健康,探寻羊奶与腊八渊源的奥秘 腊八这个传统节日在我国有着悠久的历史,它是在农历腊月初八举行的一个重要的节日。腊月初八,民间有吃腊八粥的习俗,这是一种由多种杂粮、豆、米、枸杞等制作而成的美味佳肴。而在腊八粥中&a…

django后台手机号加密存储

需求: 1 :员工在填写用户的手机号时,直接填写,在django后台中输入 2:当员工在后台确认要存储到数据库时,后台将会把手机号进行加密存储,当数据库被黑之后,手机号字段为加密字符 3&am…

AVL树 -- C++实现

AVL树 – C实现 1. AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1…

【软件测试】学习笔记-精准测试

软件测试行业从最开始的手工测试到自动化测试,从黑盒测试到白盒测试,测试理念和技术都发生了日新月异的变化。现如今,几乎所有的软件公司都有一套强大且复杂的自动化测试用例,用来夜以继日地保证产品的正确性和稳定性。 然而&…

selenium爬虫爬取当当网书籍信息 | 最新!

如果对selenium不了解的话可以到下面的链接中看基础内容: selenium爬取有道翻译-CSDN博客 废话不多说了下面是代码并且带有详细的注释: 爬取其他类型的书籍和下面基本上是类似的可以自行更改。 # 导入所需的库 from selenium import webdriver from …

6.3.3分离音频和视频

6.3.3分离音频和视频 Camtasia4有一个很实用的功能,那就是能够把视频片段中的视频和音频分离开来,这在多媒体作品创作中非常有用。 1.启动Camtasia音频编辑器。 2.选择【文件】|【打开】命令,在弹出的“打开文件”对…

企业面临哪些能源消耗问题,能源消耗监测管理系统是如何解决这些问题?

随着全球环境问题的日益严重,能源问题一直被世界广泛关注。在企业运营过程中,能源消耗问题也是一大挑战。企业在生产和运营过程中需要大量的能源支持,包括电、水、气、热等多种能源。由于能源价格的不稳定性,使得企业在能源消耗方…

【北亚企安数据恢复】RAIDZ多块磁盘离线导致服务器崩溃的数据恢复案例

服务器数据恢复环境: ORACLE SUN ZFS某型号存储,共40块磁盘组建存储池,其中的36块磁盘分为三组,每组12块,单个组使用ZFS特有的RAIDZ管理所有磁盘,RAIDZ级别为2;另外的4块磁盘作为全局热备。存储…

Dubbo分层设计之Exchange层

前言 Dubbo 框架采用分层设计,自上而下共分为十层。Exchange 层位于倒数第三层,它在 协议层 的下方、数据传输层的上方。 第一次看源码的时候,大家应该都会有一个疑问:都已经有 Transport 层了,为啥还要定义 Exchange…

JAVA调试webservice接口

java程序调试webservice接口可以使用调用工具进行调试,对应的调试工具 可在这个目录下面下载 SoapUI 下载地址:https://www,soapui.org/ 一、webservice项目可以使用soapUi 可以使用工具进行调试的前提是这个接口地址必须在前端的浏览器能够正常的打…

uniapp 获取外设键盘输入(扫码器/扫码枪/读卡器等)

前言 在使用uniapp开发收银机等设备时,常常会用到使用键盘输入的外设,如使用扫码器/扫码枪读取条形码/二维码等,及使用读卡器读取卡ID(需要读卡器支持键盘输入卡ID,此种方式只支持读取未加密的卡ID信息,读…