用pyqt5做一个简易的音乐播放器
2024-08-28 10:15:44
需求
要求可以读取音频文档,有播放和暂停的功能
附上代码
(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())
最新文章
- 一个有意思的js小问题
- ado.net 完整修改删除,攻击防攻击
- 洛谷P1631 序列合并
- IOS 应用程序启动加载过程(从点击图标到界面显示)
- Java POI 两种导出方式
- mysql分表方法-----MRG_MyISAM引擎分表法
- Linux——oracle数据库实例启动关闭(转)
- cocos2d-x中的CCScrollView滑动体验不佳
- asp.net mvc上传头像加剪裁功能
- C#中鼠标划过按钮时候的提示信息
- 自定义gradview
- 用存储过程向数据库添加大量数据【mysql】
- JSJ—类与对象
- vim8.0模式详解
- C#操作Exchange配置
- Python学习杂记
- 网络基础、多线程、ftp任务铺垫
- AD阶段分类论文阅读笔记
- Fedora 20 安装搜狗拼音输入法
- SQL Server Service Broker 简单例子 (转)
热门文章
- frontends tools
- JavaScript Learning Paths(ES5/ES6/ES-Next)
- HTTP/2 &; Push Cache
- c++指针练习
- DENIEL SOIBIM:真正自律的人都在做这些事情!
- CPU使用率原理及计算方式
- Redis高频面试题总结
- 微服务学习.net5+consul
- Android7.0无需FileProvide搞定URI拍照、应用安装问题
- 后端程序员之路 12、K最近邻(k-Nearest Neighbour,KNN)分类算法