python中Pyqt5使用Qlabel标签播放视频


Posted in Python onApril 22, 2022

Pyqt5安装并配置到pycharm的方法:pycharm安装pyqt5以及相关配置

一、简介

QLabel是界面中的标签类,继承自QFrame类,提供文本和图像的显示,是一种展示控件。

QLabel对象可以显示不可编辑的文本或图片,可以放置一个GIF动画,还可以被用作提示标记为其他控件。

纯文本、链接或富文本也可以显示在标签上。

二、基本用法

2.1 QLabel控件   

setAlignment():按固定值方式对齐文本,有以下对齐方式:

Qt.AlignLeft(水平方向靠左对齐) 、Qt.AlignRight(水平方向靠右对齐)、Qt.AlignCenter(水平方向居中对齐)、Qt.AlignJustify(水平方向调整间距两端对齐)、Qt.AlignTop(垂直方向靠上对齐)、Qt.AlignBottom(垂直方向靠下对齐)、Qt.AlignVCenter(垂直方向居中对齐)

  • setIndent():设置文本缩进
  • setPixmap():设置QLabel为一个Pixmap图片
  • text():获得QLabel的文本内容
  • setText():设置QLabel的文本内容   
  • selectedText():返回所选择的字符
  • setBuddy():设置伙伴关系
  • setWordWrap():设置是否允许换行

2.2 QLabel常用的信号(事件)

1.linkHovered:当鼠标指针滑过标签中嵌入的超链接时,需要用槽函数与这个信号进行绑定

2.linkActivated:当单击标签中嵌入的超链接,希望在新窗口中打开这个超链接时,setOpenExternalLinks特性必须设置为true

三、QLabel播放视频

使用QLabel播放视频文件的重点就在****定时器QTimer

当程序中需要显示时间时或者需要在程序中周期性地进行某项操作,就会用到定时器

 3.1 QTimer

导入QTimer模块:

from PyQt5.QtCore import QTimer

初始化:

self.timer_camera = QTimer()

计时并启动:

self.timer_camera.start(1000)   # 1000ms == 1s
self.timer_camera.timeout.connect(self.openFrame)  # 连接槽函数openFrame

注意:当QTimer的父对象被销毁时,它也会被自动销毁。

3.2 代码 

UI界面:

python中Pyqt5使用Qlabel标签播放视频

 python程序:

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.uic import loadUiType
import cv2
import sys
vedio_ui, _ = loadUiType('./UI/vedio.ui')

class VedioGui(QMainWindow, vedio_ui):
    # 定义构造方法
    def __init__(self):
        QMainWindow.__init__(self)
        self.setupUi(self)
        self.timer_camera = QTimer()
        self.handle_buttons()
        self.open_vedio()
    # 所有Button的消息与槽的通信
    def handle_buttons(self):
        self.btn_Start.clicked.connect(self.Btn_Start)
        self.btn_Stop.clicked.connect(self.Btn_Stop)
    def Btn_Start(self):
        # 定时器开启,每隔一段时间,读取一帧
        self.timer_camera.start(100)
        self.timer_camera.timeout.connect(self.OpenFrame)
    def Btn_Stop(self):
        # self.cap.release()
        self.timer_camera.stop()
    def open_vedio(self):
        """选取视频文件"""
        # 这里以mp4和avi视频播放为例
        openfile_name = QFileDialog.getOpenFileName(self, 'chose files', '', 'Image files(*.mp4 *.avi)')  # 打开文件选择框选择文件
        self.file_name = openfile_name[0]  # 获取图片名称

        # 得到文件后缀名  需要根据情况进行修改
        suffix = self.file_name.split("/")[-1][self.file_name.split("/")[-1].index(".") + 1:]
        # print(self.file_name, suffix)
        if self.file_name == '':
            pass
        elif suffix == "mp4" or suffix == "avi":
            self.cap = cv2.VideoCapture(self.file_name)
    def OpenFrame(self):
        ret, image = self.cap.read()
        if ret:
            if len(image.shape) == 3:
                image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
                vedio_img = QImage(image.data, image.shape[1], image.shape[0], QImage.Format_RGB888)
            elif len(image.shape) == 1:
                vedio_img = QImage(image.data, image.shape[1], image.shape[0], QImage.Format_Indexed8)
            else:
                vedio_img = QImage(image.data, image.shape[1], image.shape[0], QImage.Format_RGB888)
            self.vedio_label.setPixmap(QPixmap(vedio_img))
            self.vedio_label.setScaledContents(True)  # 自适应窗口
        else:
            self.cap.release()
            self.timer_camera.stop()

    # 界面关闭事件,询问用户是否关闭
    def closeEvent(self, event):
        reply = QMessageBox.question(self, '退出', "是否要退出该界面?",
                                     QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            self.close()
            event.accept()
        else:
            event.ignore()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = VedioGui()
    window.show()
    sys.exit(app.exec_())

视频播放成功显示: 

python中Pyqt5使用Qlabel标签播放视频

注:视频播放没有声音

到此这篇关于python中Pyqt5使用Qlabel实现标签进行视频播放的文章就介绍到这了!


Tags in this post...

Python 相关文章推荐
Python中动态获取对象的属性和方法的教程
Apr 09 Python
用Python脚本来删除指定容量以上的文件的教程
May 04 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
django批量导入xml数据
Oct 16 Python
Python中强大的命令行库click入门教程
Dec 26 Python
python读出当前时间精度到秒的代码
Jul 05 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
Python 在函数上添加包装器
Jul 28 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 Python
python 获取字典特定值对应的键的实现
Sep 29 Python
Python列表的深复制和浅复制示例详解
Feb 12 Python
Python使用MapReduce进行简单的销售统计
python使用pycharm安装pyqt5以及相关配置
Python使用DFA算法过滤内容敏感词
python游戏开发之pygame实现接球小游戏
Apr 22 #Python
python游戏开发Pygame框架
Apr 22 #Python
python中的random模块和相关函数详解
Apr 22 #Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 21 #Python
You might like
PHP 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
php密码生成类实例
2014/09/24 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
python处理文本文件并生成指定格式的文件
2014/07/31 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
python使用多进程的实例详解
2018/09/19 Python
Django csrf 验证问题的实现
2018/10/09 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
小学教师听课制度
2014/02/01 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
2014年底个人工作总结
2015/03/10 职场文书
计划生育工作总结2015
2015/04/03 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
导游词之神仙居景区
2019/11/15 职场文书
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python