用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())
用pyqt5做一个简易的音乐播放器的更多相关文章
- Hide-Music-Player 一个完整的音乐播放器《IT蓝豹》
Hide-Music-Player 一个完整的音乐播放器 Hide-Music-Player 一个完整的音乐播放器,本例子主要包括几个点 (1)摇一摇进入播放器 (2)下拉展开新视图(扫描音乐) (3 ...
- Swift - 制作一个在线流媒体音乐播放器(使用StreamingKit库)
在之前的文章中,我介绍了如何使用 AVPlayer 制作一个简单的音乐播放器(点击查看1.点击查看2).虽然这个播放器也可以播放网络音频,但其实际上是将音频文件下载到本地后再播放的. 本文演示如何使用 ...
- vue——一个页面实现音乐播放器
请忽略下面这段文字年关将至,时间好歹又多出了些许.却不敢过度消遣.岁月未曾饶过我,我亦不想饶过岁月.且将它塞得膨胀,让这一年看似加更充实.不曾料想我一个爱些风花雪月.研墨行歌之人,却做起了碼农这一行当 ...
- 如何用vue打造一个移动端音乐播放器
写在前面 没错,这就是慕课网上的那个vue音乐播放器,后台是某音乐播放器的线上接口扒取,虽然这类项目写的人很多,但不得不说这还是个少有的适合vue提升的好项目,做这个项目除了想写一个比较大并且功能复杂 ...
- JS写一个漂亮的音乐播放器
先放上效果图: 正如图中所展示的播放器那样,我们用HTML+CSS+JS将这个效果实现出来. HTML页面布局 <div class="music"> <div ...
- Ubuntu 下一个可用的音乐播放器
参考:http://www.pairsdoll.com/install-audacious-music-palyer-in-ubuntu.html/ 方法:打开terminal,sudo apt-ge ...
- [ 原创 ]学习笔记-做一个Android音乐播放器是遇到的一些困难
最近再做一个安卓的音乐播放器,是实验室里学长派的任务,我是在eclipse上进行开发的,由于没有android的基础,所以做起来困难重重. 首先是布局上的困难 1.layout里的控件属性不熟悉 2. ...
- 简单的音乐播放器(VS 2010 + Qt 4.8.5)
昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力. 上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器, ...
- 用<audio>标签打造一个属于自己的HTML5音乐播放器
上一章节,我们刚刚讲了<video>标签,今晚,我们讲的是<audio>标签,这两个东东除了表示的内容不一样以外,其他的特性相似的地方真的太多了,属性和用法几乎一样,也就说,如 ...
随机推荐
- MathJax TeX & LaTeX
MathJax TeX & LaTeX mathcal https://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-z ...
- React Hooks +React Context vs Redux
React Hooks +React Context vs Redux https://blog.logrocket.com/use-hooks-and-context-not-react-and-r ...
- js 动态修改页面文本字体
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- c++ winapi 在当前程序(local)调用目标程序(target)的函数
GameCheat stackoverflow 如果你的目标程序是x86/x64, 那么当前程序也需要编译为x84/x64 #include <iostream> #include < ...
- RTPS解析
资料参考: https://blog.csdn.net/HBS2011/article/details/102520704
- [Python] 茎叶图和复合饼图的画法
目录 茎叶图 复合饼图 茎叶图 from itertools import groupby nums2=[225, 232,232,245,235,245,270,225,240,240,217,19 ...
- java自学第3期——继承、多态、接口、抽象类、final关键字、权限修饰符、内部类
一.继承: 关键字extends /* 定义一个父类:人类 定义父类格式:public class 父类名称{ } 定义子类格式:public class 子类名称 extends 父类名称{ } * ...
- oracle 导入导出dmp
exp 用户名/密码@地址:端口/serviceName file=D:\710.dmp exp test710/test710@192.168.15.134:1521/doit file=D:\71 ...
- Redis集群简介及部署
1简介 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...
- 用Vue3构建企业级前端应用,TS能让你更轻松点
摘要:Vue 3已经发布有一段时间了,到底有哪些新特性值得关注,如何用它构建企业级前端项目,怎样快速上手Vue 3?本篇文章将对此进行详细讲解. 前言 工欲善其事,必先利其器 --<论语> ...