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中使用item()方法遍历字典的例子
Aug 26 Python
python的Template使用指南
Sep 11 Python
python写的一个squid访问日志分析的小程序
Sep 17 Python
Linux环境下MySQL-python安装过程分享
Feb 02 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
在Pandas中处理NaN值的方法
Jun 25 Python
python通过txt文件批量安装依赖包的实现步骤
Aug 13 Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
Django-imagekit的使用详解
Jul 06 Python
python如何写try语句
Jul 14 Python
Python系统公网私网流量监控实现流程
Nov 23 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 基于文件头的文件类型验证类函数
2012/05/01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
js更优雅的兼容
2010/08/12 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
基于jquery编写的放大镜插件
2016/03/23 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
浅析Python 中整型对象存储的位置
2016/05/16 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
python wsgiref源码解析
2021/02/06 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
介绍一下Java中标识符的命名规则
2014/02/03 面试题
教育技术学专业职业规划书
2014/03/03 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
委托书的写法
2014/08/30 职场文书
社区党支部承诺书
2015/04/29 职场文书
百家讲坛观后感
2015/06/12 职场文书
永远是春天观后感
2015/06/12 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL