用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