Python 0基础小白,按照步骤就能做的播放器 ! ! !(一)

编程入门 行业动态 更新时间:2024-10-11 01:17:46

Python 0基础小白,按照步骤就能做的<a href=https://www.elefans.com/category/jswz/34/1769718.html style=播放器 ! ! !(一)"/>

Python 0基础小白,按照步骤就能做的播放器 ! ! !(一)

目录

一 安装插件  Pyqt5  PyQt5- tools   PyQt5designer

二 需求分析

1.选中本地的播放文件进行音频播放——点击播放按钮能够找到本地的音频文件

2.更改播放模式(顺序播放:单曲循环)

3.更改当前播放的时长

三 播放器之窗口设计

四 播放器之窗口加载

五 播放器之初始化窗体属性

1定义播放器列表对象QMediaPlaylist

2定义播放器对象QMediaPlayer

3定义列表对象(保存所有播放文件名称)

4初始化按钮的提示信息

六 功能—选本地的播放文件进行音频播放

自定义播放函数musicPlay

七 功能二更改当前播放的时长

 自定义函数getTotalTime

播放器播放持续时长改变(durationChanged信号)调用自定义函数getTotalTime

自定义函数getCurrentTime

播放器当前播放时长改变positionChanged信号)调用自定义函数getCurrentTime

 时长进度条拖拽移动(sliderMoved信号)调用自定义函数timeChanged

八 功能三更改播放模式

 自定义函数modeChanged

否则(单曲循环模式)

模式按钮单击(clicked信号)调用自定义函数modeChanged

九 全程代码


一 安装插件  Pyqt5  PyQt5- tools   PyQt5designer

打开Python属性栏的file,选择setting位置,然后选择图片对应的选项

点开右下角Manage Repsditories  

进行网址添加/

搜索需要安装的Pyqt5  PyQt5- tools   PyQt5designer三个插件

 点击左下角进行安装

 安装完成后下方会有绿色的提示信息

最后返回Setting—Python interpreter界面查看插件是否安装成功 

接下来安装扩展工具,从项目中找到Lib--site--packagesQtDesigner,依次按找下图点击,复制其绝对路径  

  复制之后,要将其加入到扩展工具中,如下图

将复制的绝对路径复制到Program中,然后其他设置按照如图所示设置  

 重复上步操作这回选择项目中Python.exe并且复制其绝对路径

二 需求分析

1.选中本地的播放文件进行音频播放——点击播放按钮能够找到本地的音频文件

2.更改播放模式(顺序播放:单曲循环)

3.更改当前播放的时长

三 播放器之窗口设计

先在本项目建立一个images目录存放照片(播放器的桌面图片需要时ico格式,其他需要图片PNG格式即可)

 打开项目中的设计窗口的插件进行设计

 在Qt Designer中进行设计

设计好了之后就可以保存下来,然后在pycharm的左侧栏中找到你保存的设计窗体,右击找到externaltool点击pyuic,然后便可以双击打开后缀为.py的文件。

四 播放器之窗口加载


if __name__ == '__main__':#创建应用程序对象app=QApplication(sys.argv)#创建主窗体对象MainWindow=QMainWindow()#创建我们自定义的窗体对象ui=Ui_MainWindow()#设置自定义窗体对象为主窗体ui.setupUi(MainWindow)#显示主窗体MainWindow.show()#应用程序退出sys.exit(app.exec_())

五 播放器之初始化窗体属性

1定义播放器列表对象QMediaPlaylist

2定义播放器对象QMediaPlayer

3定义列表对象(保存所有播放文件名称)

4初始化按钮的提示信息

  # 自定义窗体初始化属性的函数def myWindowInit(self):# 创建播放列表对象(窗体属性)self.playList = QMediaPlaylist()# 初始化播放列表对象的播放模式Loop(顺序播放)self.playList.setPlaybackMode(QMediaPlaylist.Loop)# 创建播放器对象(窗体属性)self.player = QMediaPlayer()# 初始化播放器的播放音量最大self.player.setVolume(100)# 设置播放器的播放列表self.player.setPlaylist(self.playList)# 创建列表对像(窗体属性)self.musicNames=[]# 设置按钮的提示信息self.play_btn.setToolTip("播放")self.mode_btn.setToolTip("顺序播放")# 给播放按钮的单击信号(clicke)调用函数musicPlayself.play_btn.clicked.connect(self.musicPlay)#给播放器的播放音频持续时长改变信号(durationChang)调用getTotalTimeself.player.durationChanged.connect(self.getTotalTime)#给播放器的当前播放位置更改信号(positionChanged)调用getCurrentTimeself.player.positionChanged.connect(self.getCurrentTime)#给时间进度条的拖拽移动(sliderMoved)调用自主定义函数timeChanfedself.time_slider.sliderMoved.connect(self.timeChanged)

六 功能—选本地的播放文件进行音频播放

自定义播放函数musicPlay

A.判断播放器是否播放状态

B.判断播放器是否暂停状态

C.否则(停止状态)

  # 自定义播放函数def musicPlay(self):# 判断播放器是否是播放状态if self.player.state() == QMediaPlayer.State.PlayingState:#更改播放器为暂停状态self.player.pause()#更改播放按钮的图片为暂停图片self.play_btn.setIcon(QIcon("images/1.ico"))#更改播放按钮的提示信息为“播放”self.play_btn.setToolTip("播放")# 判断播放器是否是暂停状态elif self.player.state()==QMediaPlayer.State.PausedState:#更改播放器为播放状态self.player.play()#更改播放按钮的图片为播放图片self.play_btn.setIcon(QIcon("images/2.ico"))#更改播放按钮的提示信息为“暂停”self.play_btn.setToolTip("暂停")# 否则(停止状态)else:# 获取本地音频文件fileNames, typeName = QFileDialog.getOpenFileNames(None, "选择音乐", '', "*")# 循环音频文件的列表for i in fileNames:# 把音频文件加载到播放列表对象中self.playList.addMedia(QMediaContent(QUrl.fromLocalFile(i)))#获取音频文件路径最后一个“/"字符的位置start=i.rfind('/')end=i.rfind('.')#获取音频文件中文件名称,追加到列表对象中self.musicNames.append(i[start+1:end])# 设置当前播放列表的播放音频索引self.playList.setCurrentIndex(0)# 开始播放self.player.play()#更改播放按钮的图片为暂停图片self.play_btn.setIcon(QIcon("images/2.ico"))#更改播放按钮的提示信息为“暂停”self.play_btn.setToolTip("暂停")#设置窗体标题显示当前播放名称MainWindow.setWindowTitle(f"我的音乐酷--{self.musicNames[0]}")

七 功能二更改当前播放的时长

 自定义函数getTotalTime

播放器播放持续时长改变(durationChanged信号)调用自定义函数getTotalTime

自定义函数getCurrentTime

播放器当前播放时长改变positionChanged信号)调用自定义函数getCurrentTime

 时长进度条拖拽移动(sliderMoved信号)调用自定义函数timeChanged

#自定义函数,获取播放音频的总时长,参数d保存的音频的总时长 (毫秒)def getTotalTime(self,d):#.设置时间进度条的进度值和正在播放的音频总时长一致self.time_slider.setRange(0,d)#获取当前播放列表index=self.playList.currentIndex()#设置窗体标题显示播放音频名称MainWindow.setWindowTitle(f"我的音乐酷--{self.musicNames[index]}")#自定义函数,获取播放音频的当前时长,参数p保存的是音频当前时长(毫秒)def getCurrentTime(self,p):#设置时长进度条的当前进度self.time_slider.setValue(p)#获取时长的秒seconds=int(p/1000)#获取时长的分钟minutes=int(seconds/60)seconds=seconds--minutes*60str_time = ""if minutes<10:str_time = str_time + "0"+str(minutes)else:str_time=str_time+str(minutes)str_time = str_time + ":"if seconds < 10:str_time = str_time + "0" + str(seconds)else:str_time = str_time+str(seconds)#把分钟和秒设置在时间标签中显示self.time_lbl.setText(f"{str_time }")#自定义函数,更改当前播放位置def timeChanged(self,t):#设置播放器的当前位置为进度条的当前进度self.player.setPosition(t)

八 功能三更改播放模式

 自定义函数modeChanged

否则(单曲循环模式)

  #自定义函数,更改播放模式def modeChanged(self):# 判断播放列表的播放模式是否是顺序播放if self.playList.playbackMode() == QMediaPlaylist.Loop:# 1)更改播放列表当前播放模式为单曲循环self.playList.setPlaybackMode(QMediaPlaylist.CurrentItemInLoop)# 2)更改模式按钮的图片为单曲循环图片self.mode_btn.setIcon(QIcon("images/3.ico"))# 3)更改模式按钮提示信息self.mode_btn.setToolTip("单曲循环")# 否则单曲循环else:# 1)更改播放列表当前播放模式为顺序播放self.playList.setPlaybackMode(QMediaPlaylist.Loop)# 2)更改模式按钮的图片为顺序图片self.mode_btn.setIcon(QIcon("images/4.ico"))# 3)更改模式按钮提示信息self.mode_btn.setToolTip("顺序播放")

模式按钮单击(clicked信号)调用自定义函数modeChanged

在前边自主定义窗体初始化属性的函数部分添加(点击播放按钮(clicked信号)调用函数musicPlay)

九 全程代码

本人是Python小白发现本人思路有问题的请指出,做完这个小项目请示最考验的是对整体的理解,知道自己要做什么然后怎么取用代码去实现的你的想法。其中也运用到了面向对象的知识所以主要是先屡思路,技术可以慢慢来学.期望大家一起进步

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'myMusics.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
import sysfrom PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QIcon
from PyQt5.QtMultimedia import QMediaPlaylist, QMediaPlayer, QMediaContent
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialogdef fileNames(args):passclass QMeduaContent(object):passdef fromLocalFile(i):passclass MainWindow(object):passclass MainWindow(object):passclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(690, 148)icon = QtGui.QIcon()icon.addPixmap(QtGui.QPixmap("images/7.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)MainWindow.setWindowIcon(icon)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.play_btn = QtWidgets.QPushButton(self.centralwidget)self.play_btn.setEnabled(True)self.play_btn.setGeometry(QtCore.QRect(0, -10, 181, 161))font = QtGui.QFont()font.setFamily("仿宋")self.play_btn.setFont(font)self.play_btn.setMouseTracking(False)self.play_btn.setTabletTracking(False)self.play_btn.setText("")icon1 = QtGui.QIcon()icon1.addPixmap(QtGui.QPixmap("images/1.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.play_btn.setIcon(icon1)self.play_btn.setIconSize(QtCore.QSize(130, 130))self.play_btn.setObjectName("play_btn")self.mode_btn = QtWidgets.QPushButton(self.centralwidget)self.mode_btn.setGeometry(QtCore.QRect(500, -10, 191, 161))font = QtGui.QFont()font.setFamily("仿宋")self.mode_btn.setFont(font)self.mode_btn.setText("")icon2 = QtGui.QIcon()icon2.addPixmap(QtGui.QPixmap("images/4.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)self.mode_btn.setIcon(icon2)self.mode_btn.setIconSize(QtCore.QSize(130, 130))self.mode_btn.setObjectName("mode_btn")self.time_slider = QtWidgets.QSlider(self.centralwidget)self.time_slider.setGeometry(QtCore.QRect(240, 60, 211, 20))self.time_slider.setOrientation(QtCore.Qt.Horizontal)self.time_slider.setObjectName("time_slider")self.time_lbl = QtWidgets.QLabel(self.centralwidget)self.time_lbl.setGeometry(QtCore.QRect(330, 90, 41, 16))font = QtGui.QFont()font.setFamily("仿宋")self.time_lbl.setFont(font)self.time_lbl.setObjectName("time_lbl")MainWindow.setCentralWidget(self.centralwidget)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)# 调用自定义的窗体初始化属性函数self.myWindowInit()def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "我的音乐酷"))self.time_lbl.setText(_translate("MainWindow", "00:00"))# 自定义窗体初始化属性的函数def myWindowInit(self):# 创建播放列表对象(窗体属性)self.playList = QMediaPlaylist()# 初始化播放列表对象的播放模式Loop(顺序播放)self.playList.setPlaybackMode(QMediaPlaylist.Loop)# 创建播放器对象(窗体属性)self.player = QMediaPlayer()# 初始化播放器的播放音量最大self.player.setVolume(100)# 设置播放器的播放列表self.player.setPlaylist(self.playList)# 创建列表对像(窗体属性)self.musicNames=[]# 设置按钮的提示信息self.play_btn.setToolTip("播放")self.mode_btn.setToolTip("顺序播放")# 给播放按钮的单击信号(clicke)调用函数musicPlayself.play_btn.clicked.connect(self.musicPlay)#给播放器的播放音频持续时长改变信号(durationChang)调用getTotalTimeself.player.durationChanged.connect(self.getTotalTime)#给播放器的当前播放位置更改信号(positionChanged)调用getCurrentTimeself.player.positionChanged.connect(self.getCurrentTime)#给时间进度条的拖拽移动(sliderMoved)调用自主定义函数timeChanfedself.time_slider.sliderMoved.connect(self.timeChanged)#给模式按钮点击(clicked信号)调用自定义函数modeChangedself.mode_btn.clicked.connect(self.modeChanged)#自定义函数,更改播放模式def modeChanged(self):# 判断播放列表的播放模式是否是顺序播放if self.playList.playbackMode() == QMediaPlaylist.Loop:# 1)更改播放列表当前播放模式为单曲循环self.playList.setPlaybackMode(QMediaPlaylist.CurrentItemInLoop)# 2)更改模式按钮的图片为单曲循环图片self.mode_btn.setIcon(QIcon("images/3.ico"))# 3)更改模式按钮提示信息self.mode_btn.setToolTip("单曲循环")# 否则单曲循环else:# 1)更改播放列表当前播放模式为顺序播放self.playList.setPlaybackMode(QMediaPlaylist.Loop)# 2)更改模式按钮的图片为顺序图片self.mode_btn.setIcon(QIcon("images/4.ico"))# 3)更改模式按钮提示信息self.mode_btn.setToolTip("顺序播放")#自定义函数,获取播放音频的总时长,参数d保存的音频的总时长 (毫秒)def getTotalTime(self,d):#.设置时间进度条的进度值和正在播放的音频总时长一致self.time_slider.setRange(0,d)#获取当前播放列表index=self.playList.currentIndex()#设置窗体标题显示播放音频名称MainWindow.setWindowTitle(f"我的音乐酷--{self.musicNames[index]}")#自定义函数,获取播放音频的当前时长,参数p保存的是音频当前时长(毫秒)def getCurrentTime(self,p):#设置时长进度条的当前进度self.time_slider.setValue(p)#获取时长的秒seconds=int(p/1000)#获取时长的分钟minutes=int(seconds/60)seconds=seconds--minutes*60str_time = ""if minutes<10:str_time = str_time + "0"+str(minutes)else:str_time=str_time+str(minutes)str_time = str_time + ":"if seconds < 10:str_time = str_time + "0" + str(seconds)else:str_time = str_time+str(seconds)#把分钟和秒设置在时间标签中显示self.time_lbl.setText(f"{str_time }")#自定义函数,更改当前播放位置def timeChanged(self,t):#设置播放器的当前位置为进度条的当前进度self.player.setPosition(t)# 自定义播放函数def musicPlay(self):# 判断播放器是否是播放状态if self.player.state() == QMediaPlayer.State.PlayingState:#更改播放器为暂停状态self.player.pause()#更改播放按钮的图片为暂停图片self.play_btn.setIcon(QIcon("images/1.ico"))#更改播放按钮的提示信息为“播放”self.play_btn.setToolTip("播放")# 判断播放器是否是暂停状态elif self.player.state()==QMediaPlayer.State.PausedState:#更改播放器为播放状态self.player.play()#更改播放按钮的图片为播放图片self.play_btn.setIcon(QIcon("images/2.ico"))#更改播放按钮的提示信息为“暂停”self.play_btn.setToolTip("暂停")# 否则(停止状态)else:# 获取本地音频文件fileNames, typeName = QFileDialog.getOpenFileNames(None, "选择音乐", '', "*")# 循环音频文件的列表for i in fileNames:# 把音频文件加载到播放列表对象中self.playList.addMedia(QMediaContent(QUrl.fromLocalFile(i)))#获取音频文件路径最后一个“/"字符的位置start=i.rfind('/')end=i.rfind('.')#获取音频文件中文件名称,追加到列表对象中self.musicNames.append(i[start+1:end])# 设置当前播放列表的播放音频索引self.playList.setCurrentIndex(0)# 开始播放self.player.play()#更改播放按钮的图片为暂停图片self.play_btn.setIcon(QIcon("images/2.ico"))#更改播放按钮的提示信息为“暂停”self.play_btn.setToolTip("暂停")#设置窗体标题显示当前播放名称MainWindow.setWindowTitle(f"我的音乐酷--{self.musicNames[0]}")# 程序入口
if __name__ == '__main__':# 创建应用程序对象app = QApplication(sys.argv)# 创建主窗体对象MainWindow = QMainWindow()# 创建我们自定义的窗体对象ui = Ui_MainWindow()# 设置自定义窗体对象为主窗体ui.setupUi(MainWindow)# 设置窗体大小不可更改MainWindow.setFixedSize(MainWindow.width(), MainWindow.height())# 显示主窗体MainWindow.show()# 应用程序退出sys.exit(app.exec_())

更多推荐

Python 0基础小白,按照步骤就能做的播放器 ! ! !(一)

本文发布于:2024-02-07 07:11:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754161.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:播放器   能做   步骤   基础   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!