PyQt5学习笔记--基于Qt Designer加载和播放视频

目录

1--基于Qt Designer设计ui文件

2--代码

3--结果

4--补充


1--基于Qt Designer设计ui文件

PyQt5学习笔记--基于Qt Designer加载和播放视频_第1张图片

2--代码

from PyQt5.QtWidgets import *
from PyQt5.QtMultimedia import *
from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5 import uic
import sys

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        self.ui = uic.loadUi("./video.ui")  # 加载由Qt Designer设计的ui文件

        # 加载自定义ui属性
        self.openGLWidget = self.ui.openGLWidget
        self.video_btn1 = self.ui.pushButton
        self.video_btn2 = self.ui.pushButton_2

        # 创建一个布局将 QVideoWidget 内嵌到 自定义ui的Widget中
        layout = QHBoxLayout()
        self.vw = QVideoWidget()
        layout.addWidget(self.vw)
        self.openGLWidget.setLayout(layout)

        # img_btn1 绑定槽函数 loadVideo()
        self.video_btn1.clicked.connect(self.loadVideo)

        # img_btn2 绑定槽函数 playVideo()
        self.video_btn2.clicked.connect(self.playVideo)

    def loadVideo(self):
        self.player = QMediaPlayer()
        self.player.setVideoOutput(self.vw) # 视频播放的widget
        self.player.setMedia(QMediaContent(QFileDialog.getOpenFileUrl()[0])) # 选取视频文件

    def playVideo(self):
        self.player.play() # 播放视频
        self.vw.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    w = MyWindow()
    w.ui.show()
    sys.exit(app.exec_())

3--结果

PyQt5学习笔记--基于Qt Designer加载和播放视频_第2张图片

PyQt5学习笔记--基于Qt Designer加载和播放视频_第3张图片

PyQt5学习笔记--基于Qt Designer加载和播放视频_第4张图片

4--补充

① 上述代码只实现了加载视频和播放视频的功能,缺少暂停、进度移动等常见功能。

② 上述代码将 QVideoWidget 通过一个layout布局的形式内嵌到自定义的 QOpenGLWidget 中,但播放测试视频的时候存在视频无法覆盖 Widget 的问题。

你可能感兴趣的:(qt,学习,ui)