用pyqt5做一个简易的音乐播放器


需求

要求可以读取音频文档,有播放和暂停的功能

附上代码
(1)UI界面

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'UiForm.ui' # # Created by: PyQt5 UI code generator 5.15.1 # # 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. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(750, 350) self.btn_readMusic = QtWidgets.QPushButton(Form) self.btn_readMusic.setGeometry(QtCore.QRect(140, 200, 93, 28)) self.btn_readMusic.setObjectName("btn_readMusic") self.btn_play = QtWidgets.QPushButton(Form) self.btn_play.setGeometry(QtCore.QRect(310, 200, 93, 28)) self.btn_play.setObjectName("btn_play") self.btn_pause = QtWidgets.QPushButton(Form) self.btn_pause.setGeometry(QtCore.QRect(490, 200, 93, 28)) self.btn_pause.setObjectName("btn_pause") self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(50, 110, 81, 21)) self.label.setObjectName("label") self.label_MusicMessage = QtWidgets.QLabel(Form) self.label_MusicMessage.setGeometry(QtCore.QRect(140, 110, 591, 21)) self.label_MusicMessage.setObjectName("label_MusicMessage") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.btn_readMusic.setText(_translate("Form", "读取音频")) self.btn_play.setText(_translate("Form", "播放")) self.btn_pause.setText(_translate("Form", "停止")) self.label.setText(_translate("Form", "当前播放:")) self.label_MusicMessage.setText(_translate("Form", "暂无")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) 

(2)逻辑处理类

# -*- coding: utf-8 -*- # @Time : 2021/4/2 22:23 # @Author : Zeeland # @File : FunEdit.py # @Software: PyCharm from PyQt5.QtWidgets import QWidget,QApplication,QFileDialog,QMessageBox from UiForm import Ui_Form import sys,time,pygame class FunEdit(QWidget,Ui_Form): ''' 初始化各方面信息 ''' def __init__(self): super(FunEdit, self).__init__() self.setupUi(self)#Ui初始化 self.init() ''' 该方法用于信号与槽的绑定 ''' def init(self): self.btn_readMusic.clicked.connect(self.readMusic) self.btn_play.clicked.connect(self.start) self.btn_pause.clicked.connect(self.pause) ''' 读取音频 ''' def readMusic(self): #读取特定格式的文件,传入一个self,"标题名","初始显示文件夹的路径","特定格式(以两个分号区分)" #该方法返回一个Tuple,分别为str类型的路径名和file的type(eg:MP3) self.fdir,self.ftype =QFileDialog.getOpenFileName(self,"Open File","","Mp3(*.mp3);;Wav(*.wav)") # 判断是否为空路径,如果为空路径,则不能加载音频,否则会闪退 if self.fdir=="": print("没有选择文件") return print(self.fdir) pygame.init()#初始化音乐播放装置,初始化后才可以使用 self.track =pygame.mixer.music.load(str(self.fdir))#加载音频文件(放入缓存池) self.label_MusicMessage.setText(str(self.fdir)) ''' 播放 ''' def start(self): if self.label_MusicMessage.text()=='暂无': QMessageBox.about(self,'message','当前暂无播放的音乐') return pygame.mixer.music.play()#播放 ''' 停止播放 ''' def pause(self): if self.label_MusicMessage.text()=='暂无': QMessageBox.about(self,'message','当前暂无播放的音乐') return pygame.mixer.music.stop()#暂停 self.label_MusicMessage.setText("暂停中") ''' 主方法运行入口 ''' if __name__ == '__main__': app = QApplication(sys.argv) win = FunEdit() win.show() sys.exit(app.exec())


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM