PyQt5:QMediaplayer,QVideowidget播放视频(3)

本文介绍了使用PyQt5构建的多媒体播放器的开发过程,包括播放列表管理、音频设置、文件添加(本地和网络)、播放控制等功能。通过模块化设计,实现了界面布局、播放控制和音量调节等基础功能。同时,文章还展示了如何保存和加载配置文件以保持播放状态。

PyQt5:QMediaplayer,QVideowidget播放视频(3)

简介

PyQt5:QMediaplayer,QVideowidget播放视频(2)上一篇中完善了界面的布局,快进,慢进。在本篇更新中做了代码做了重构,架构的好坏就另说了,python 没有做过成熟的项目,一直自己写的玩。在本篇中主要更新了UI播放列表配置项媒体文件管理布局子控件,还有快进、快退、音量等等一些基础功能。

代码结构

模块架构

文件结构
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2020/9/21     20:52                __pycache__
-a----        2020/5/18     22:28            761 audio.py
-a----        2020/5/18     22:23           2008 audio.ui
-a----        2020/9/22     22:13            379 config.json
-a----         2020/5/6     23:31           2371 itemWidget.ui
-a----        2020/9/22     22:15           7805 MediaPlayer.py
-a----        2020/5/18     23:03           1776 MediaPlayer.pyproj
-a----        2020/9/21     20:52           9788 MediaPlayer.ui
-a----        2020/9/21     20:52           8664 ui.py
-a----        2020/5/18     22:01           2281 ui_audio.py
-a----        2020/5/14     21:10           5533 ui_url.py
-a----        2020/5/18     23:03            991 urlWidget.py
-a----        2020/5/14     21:10           7030 urlWidget.ui

在上图中可以看到,主要分为三个模块,MediaPlayer、audio、urlWidget 三个模块。其中 MediaPlayer为主窗口,主体界面布局、逻辑功能、播放窗口、播放列表都在其中实现。audio模块主要负责音量条。urlWidget模块主要负责网络url弹窗输入。

源码介绍

Audio

在文件结构中可以看到,主要有三个文件。audio.ui,ui_audio.py,audio.py 分别是 UI设计文件,UIpy文件,code文件。

Audio.ui

UI设计文件:

在这里插入图片描述

Widget类型,布局全部用UI布局,不使用代码,原则是,尽量少用代码设置,方便后期修改维护。布局时,使用Frame嵌套,方便子控件修改。提高易用性,可读性。

Audio_ui.py

FileName = os.path.basename(sys.argv[0])
FilePath = sys.argv[0].replace(FileName,"")
UiName = FileName.replace(".py",".ui")
UiPath = FilePath +UiName
Ui_pyName = FilePath+"ui_audio.py"
FileFlag = os.path.isfile(Ui_pyName)

if FileFlag == 0:
	sys_cmd	 = os.popen("pyuic5"+" -o "+Ui_pyName+" "+UiPath)
	time.sleep(1)

还是采用之前的方法,使用命令转换,在更新UI后,删除之前的 ui_xxx.py文件,下次会自动生成。记得将对应的audio.py 设置为启动文件。然后在切回去。

audio.py

from ui_audio import Ui_Audio
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class audioWidget(QWidget):
	def __init__(self):
		super(audioWidget,self).__init__()
		global ui
		ui = Ui_Audio()
		ui.setupUi(self)
		self.audio = ui

	def getSlider(self):
		return self.audio.verticalSlider

	def getMuteBtn(self):
		return self.audio.pushButton

对外接口主要有两个 音量输出,静音输出。

urlWidget

与audio模块相同也是拥有三个对应文件. ui 和 ui.py 不做介绍

urlWidget.ui

urlWidget_ui.py

urlWidget.py

from ui_url import Ui_urlWidget
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class urlWidget(QWidget):
	fileInfo_Signle = pyqtSignal(list)
	def __init__(self):
		super(urlWidget,self).__init__()
		global ui
		ui = Ui_urlWidget()
		ui.setupUi(self)
		self.url = ui
		ui.pushButton_2.clicked.connect(self.sltConfirm)

	def getFileInfo(self):
		return [self.url.lineEdit_url.text(),self.url.lineEdit.text()]

	def sltConfirm(self):
		self.fileInfo_Signle.emit([self.url.lineEdit_url.text(),self.url.lineEdit.text()])
		self.hide()

	def sltCancel(self):
		self.hide()

其功能主要是添加网络媒体资源时,提供单独的窗口,有两个输入的LineEidt ,一个是 url 路径,一个 媒体资源名称。

提供了两种方式对外输出urlhe 媒体文件名称。调用接口与信号槽

	def getFileInfo(self):
		return [self.url.lineEdit_url.text(),self.url.lineEdit.text()]
	fileInfo_Signle = pyqtSignal(list)
	def sltConfirm(self):
		self.fileInfo_Signle.emit([self.url.lineEdit_url.text(),self.url.lineEdit.text()])
		self.hide()
MediaPlayer

该模块主窗口模块,主要负责逻辑部分即业务部分。还有一些 listwdiget,videowidget 主要功能实现,其实按照设计模式应该也做单独的 模块,主窗口负责调用。

下面介绍MediaPlayer

初始化

init

	def __init
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值