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套接字流重定向实例汇总
Mar 03 Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 Python
python解析html提取数据,并生成word文档实例解析
Jan 22 Python
python3的输入方式及多组输入方法
Oct 17 Python
总结python中pass的作用
Feb 27 Python
Pycharm保存不能自动同步到远程服务器的解决方法
Jun 27 Python
完美解决python3.7 pip升级 拒绝访问问题
Jul 12 Python
TensorFlow2.0矩阵与向量的加减乘实例
Feb 07 Python
python默认参数调用方法解析
Feb 09 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
OpenCV-Python实现轮廓的特征值
Jun 09 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项目打包方法
2008/02/18 PHP
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
浅析SVN常见问题及解决方法
2013/06/21 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
javascript与cookie 的问题详解
2013/11/11 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
layui 设置table 行的高度方法
2018/08/17 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
用python编写第一个IDA插件的实例
2018/05/29 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
情人节快乐! python绘制漂亮玫瑰
2020/08/18 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
python 写一个水果忍者游戏
2021/01/13 Python
金融事务专业毕业生求职信
2014/02/23 职场文书
财务部副经理岗位职责
2014/03/14 职场文书
班级口号大全
2014/06/09 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
教师个人年度总结
2015/02/11 职场文书
财务管理制度范本
2015/08/04 职场文书
生产车间管理制度
2015/08/04 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python