PyQt5实现简易音乐播放器

这篇具有很好参考价值的文章主要介绍了PyQt5实现简易音乐播放器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PyQt5实现简易音乐播放器

  1. 环境
  1. vscode
  2. python 3.10.0
  3. PyQt5 5.15.4
  1. 功能目标

能够读取本地的音乐文件,并实现播放的开关、曲目的切换和音量的加减

  1. 具体实现
    1. 新建一个文件夹,在文件夹下再新建一个文件夹,命名为music,将歌曲放入其中。在vscode中打开该文件夹。
      pyqt5 音乐播放器,PyQt5实践,ui,python,qt5,音视频
    2. 在QtDesigner中搭建出UI界面,并使用pyuic工具转换为py文件
      pyqt5 音乐播放器,PyQt5实践,ui,python,qt5,音视频
    3. 新建main.py文件,用于界面的显示
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow
from Ui_musicplayer import Ui_Dialog
 
class MainWin(QMainWindow, Ui_Dialog):
    def __init__(self, parent=None):
        super(MainWin, self).__init__(parent)
        self.setupUi(self)
        
if __name__ == '__main__':
	# 屏幕适配处理
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    main = MainWin()
    main.show()
    sys.exit(app.exec_())
4. 通过os.listdir()函数完成歌曲文件的读取
... # 省略之前出现的内容,后面的...同理
import os
 
class MainWin(QMainWindow, Ui_Dialog): 
    def __init__(self, parent=None):
        super(MainWin, self).__init__(parent)
        self.setupUi(self)
        # 歌曲存放目录
        self.mp3filedir = "./music/"
        # 用于存放歌曲名称的空列表
        self.music_list = []
        # 当前播放歌曲在列表中的位置,开始为0
        self.music_index = 0
        # 从歌曲存放目录中读取所有文件名,并放入列表中
        for file_name in os.listdir(self.mp3filedir):
            self.music_list.append(file_name)
        # 获取歌曲总数
        self.music_all_num = len(self.music_list)
5. 新建 QMediaPlayer对象,并完成音量的设置
...
from PyQt5.QtCore import QUrl
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
 
class MainWin(QMainWindow, Ui_Dialog):
    def __init__(self, parent=None):
        super(MainWin, self).__init__(parent)
        self.setupUi(self)
        ...
        # 新建QMediaPlayer对象
        self.player = QMediaPlayer()
        # 当前播放状态标志位,False表示当前处于暂停状态,True表示当前处于播放状态
        self.player_state = False
        # 音量设定
        self.voice_level = 50
        # 音量设置,0-100,设置为0将静音
        self.player.setVolume(self.voice_level)
        # 拼接歌曲存放目录和歌曲名成完整路径,获取到文件
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile(self.mp3filedir + self.music_list[self.music_index])))
6. 歌曲名字的展示
...
 
class MainWin(QMainWindow, Ui_Dialog):
    
    def __init__(self, parent=None):
        super(MainWin, self).__init__(parent)
        self.setupUi(self)
       ...
        # 歌曲名展示
        self.music_detail()

    def music_detail(self):
        # 根据当前歌曲位置索引获取歌曲名
        self.label.setText(self.music_list[self.music_index])

效果图

pyqt5 音乐播放器,PyQt5实践,ui,python,qt5,音视频文章来源地址https://www.toymoban.com/news/detail-537096.html

7. 播放按钮绑定函数,t实现歌曲播放状态的切换
...
 
class MainWin(QMainWindow, Ui_Dialog):
    
    def __init__(self, parent=None):
    	super(MainWin, self).__init__(parent)
        self.setupUi(self)
       ...
        # 播放按钮绑定函数
        self.pushButton.clicked.connect(self.player_state_change)

    def player_state_change(self):
        # 通过self.player_state获取当前播放状态,再进行切换
        if self.player_state:
        	# 停止播放
            self.player.stop()
            # 播放状态标志设置为False
            self.player_state = False
        else:
        	# 播放当前音频
            self.player.play()
            # 播放状态标志设置为True
            self.player_state = True
8. 歌曲上下切换按钮绑定函数,实现歌曲的切换
...
 
class MainWin(QMainWindow, Ui_Dialog):
    
    def __init__(self, parent=None):
        super(MainWin, self).__init__(parent)
        self.setupUi(self)
  		...
  		# 下一首按钮点击事件绑定函数
        self.pushButton_2.clicked.connect(self.next_music)
        # 上一首按钮点击事件绑定函数
        self.pushButton_3.clicked.connect(self.previous_music)

    def next_music(self):
    	# 如果当前播放的音频位置索引为列表中最后一首,则位置索引置为0,回到列表开头
        if self.music_index == self.music_all_num-1:
            self.music_index = 0
        # 否则位置索引加1
        else:
            self.music_index += 1
        # 根据位置索引获取歌曲名,并和歌曲存放目录拼接获取文件
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile(self.mp3filedir + self.music_list[self.music_index])))
        # 歌曲名展示更新
        self.music_detail()
        # 进行播放
        self.player.play()

    def previous_music(self):
        # 如果当前播放的音频位置索引为列表中第一首,则位置索引置为列表长度减一,到列表末尾
        if self.music_index == 0:
            self.music_index = self.music_all_num - 1
        # 否则位置索引减1
        else:
            self.music_index -= 1
        # 根据位置索引获取歌曲名,并和歌曲存放目录拼接获取文件
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile(self.mp3filedir + self.music_list[self.music_index])))
        # 歌曲名展示更新
        self.music_detail()
        # 进行播放
        self.player.play()

9. 音量的增减,直接修改音量设定值再执行次音量设定函数即可
...
 
class MainWin(QMainWindow, Ui_Dialog):
    
    def __init__(self, parent=None):
        super(MainWin, self).__init__(parent)
        self.setupUi(self)
        ...
        self.pushButton_4.clicked.connect(self.voice_add)
        self.pushButton_5.clicked.connect(self.voice_reduce)
    
    def voice_add(self):
        if self.voice_level < 100:
            self.voice_level += 10
        self.player.setVolume(self.voice_level)

    def voice_reduce(self):
        if self.voice_level > 0:
            self.voice_level -= 10
        self.player.setVolume(self.voice_level)
  1. 主函数代码汇总
import sys
import os
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtCore import QUrl
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
from Ui_musicplayer import Ui_Dialog
 
class MainWin(QMainWindow, Ui_Dialog):
    
    def __init__(self, parent=None):
        super(MainWin, self).__init__(parent)
        self.setupUi(self)
        # 新建QMediaPlayer对象
        self.player = QMediaPlayer()
        # 当前播放状态标志位,False表示当前处于暂停状态,True表示当前处于播放状态
        self.player_state = False
        # 歌曲存放目录
        self.mp3filedir = "./music/"
        # 用于存放歌曲名称的空列表
        self.music_list = []
        # 当前播放歌曲在列表中的位置
        self.music_index = 0
        # 音量设置
        self.voice_level = 50
        # 从歌曲存放目录中读取所有文件名,并放入列表中
        for file_name in os.listdir(self.mp3filedir):
            self.music_list.append(file_name)
        # 获取歌曲总数
        self.music_all_num = len(self.music_list)
        # 拼接歌曲存放目录和歌曲名成完整路径,获取到文件
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile(self.mp3filedir + self.music_list[self.music_index])))
        # 文件名展示
        self.music_detail()
        # 音量设置
        self.player.setVolume(self.voice_level)
        # 播放按钮绑定函数
        self.pushButton.clicked.connect(self.player_state_change)
        # 下一首按钮绑定函数
        self.pushButton_2.clicked.connect(self.next_music)
        # 上一首按钮绑定函数
        self.pushButton_3.clicked.connect(self.previous_music)
        # 音量加按钮绑定函数
        self.pushButton_4.clicked.connect(self.voice_add)
        # 音量减按钮绑定函数
        self.pushButton_5.clicked.connect(self.voice_reduce)

    def player_state_change(self):
        # 通过self.player_state获取当前播放状态,再进行切换
        if self.player_state:
        	# 停止播放
            self.player.stop()
            # 播放状态标志设置为False
            self.player_state = False
        else:
        	# 播放当前音频
            self.player.play()
            # 播放状态标志设置为True
            self.player_state = True

    def next_music(self):
    	# 如果当前播放的音频位置索引为列表中最后一首,则位置索引置为0,回到列表开头
        if self.music_index == self.music_all_num-1:
            self.music_index = 0
        # 否则位置索引加1
        else:
            self.music_index += 1
        # 根据位置索引获取歌曲名,并和歌曲存放目录拼接获取文件
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile(self.mp3filedir + self.music_list[self.music_index])))
        # 歌曲名展示更新
        self.music_detail()
        # 进行播放
        self.player.play()

    def previous_music(self):
        # 如果当前播放的音频位置索引为列表中第一首,则位置索引置为列表长度减一,到列表末尾
        if self.music_index == 0:
            self.music_index = self.music_all_num - 1
        # 否则位置索引减1
        else:
            self.music_index -= 1
        # 根据位置索引获取歌曲名,并和歌曲存放目录拼接获取文件
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile(self.mp3filedir + self.music_list[self.music_index])))
        # 歌曲名展示更新
        self.music_detail()
        # 进行播放
        self.player.play()

    def music_detail(self):
        self.label.setText(self.music_list[self.music_index])
    
    def voice_add(self):
        if self.voice_level < 100:
            self.voice_level += 10
        self.player.setVolume(self.voice_level)

    def voice_reduce(self):
        if self.voice_level > 0:
            self.voice_level -= 10
        self.player.setVolume(self.voice_level)
        


if __name__ == '__main__':
    # 屏幕分辨率适配
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    main = MainWin()
    main.show()
    sys.exit(app.exec_())
  1. 布局文件
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.groupBox = QtWidgets.QGroupBox(Dialog)
        self.groupBox.setGeometry(QtCore.QRect(0, 10, 401, 251))
        self.groupBox.setObjectName("groupBox")
        self.label = QtWidgets.QLabel(self.groupBox)
        self.label.setGeometry(QtCore.QRect(10, 20, 381, 221))
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.layoutWidget = QtWidgets.QWidget(Dialog)
        self.layoutWidget.setGeometry(QtCore.QRect(0, 270, 401, 25))
        self.layoutWidget.setObjectName("layoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton_4 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_4.setObjectName("pushButton_4")
        self.horizontalLayout.addWidget(self.pushButton_4)
        self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.pushButton = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.pushButton_3 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout.addWidget(self.pushButton_3)
        self.pushButton_5 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_5.setObjectName("pushButton_5")
        self.horizontalLayout.addWidget(self.pushButton_5)

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.groupBox.setTitle(_translate("Dialog", "详情"))
        self.label.setText(_translate("Dialog", "TextLabel"))
        self.pushButton_4.setText(_translate("Dialog", "音量+"))
        self.pushButton_2.setText(_translate("Dialog", "上一首"))
        self.pushButton.setText(_translate("Dialog", "播放"))
        self.pushButton_3.setText(_translate("Dialog", "下一首"))
        self.pushButton_5.setText(_translate("Dialog", "音量-"))

到了这里,关于PyQt5实现简易音乐播放器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端 用HTML,CSS, JS 写一个简易的音乐播放器

    这个实现了基本的播放/暂停、歌曲切换、音量控制、进度条控制和显示歌曲信息等功能,同时还支持播放模式切换和歌曲列表操作。不过这只是一个简单的示例,实际上还有很多功能需要进一步完善和优化,例如: 支持歌词显示和同步 支持播放列表编辑和保存 支持拖拽上传

    2024年02月04日
    浏览(42)
  • Python轻松实现音乐播放器

    来个新玩意就是教大家如何用python来制作一个音乐播放器 希望对大家有所帮助哈哈 你们也可以尝试自己做做 先给你们展示展示最简单的,只需要九行代码 知识点和所需模块 python基础知识 requests库 time pygame tkinter 线程 环境 windows pycharm 2021.2 python 3.8 ok,直接说上完整代码 !

    2024年02月11日
    浏览(54)
  • Qt实现本地音乐播放器

     mainwindow.h mainwindow.cpp qss: 源码:Qt与学习通页面: 记录与Qt相关的代码 - Gitee.com

    2024年02月12日
    浏览(47)
  • 学习笔记(1)——粤嵌gec6818实现电子相册,音乐播放器,视频播放器。

    (1)设计一个初始界面,并且设置电子相册,音乐播放器,视频播放器三个触摸按键。 (2)电子相册——能够实现相册的幻灯片功能,实现相册左右滑动切换相片。 (3)音乐播放器实现——切歌,播放和暂停功能。 (4)视频播放器实现——播放、暂停、音量大小、快进倒

    2024年02月11日
    浏览(61)
  • Android Studio 实现音乐播放器

    🍅 文章末尾有获取完整项目源码方式 🍅         Android初学者开发第一个完整的实例项目应该就属《音乐播放器》了,项目包含SQLlit数据库的使用、listview、Fragment、等。话不多说先上成品: Android Studio 音乐播放器 图片效果展示: 1.启动页效果 2.登录页效果 3.注册页效果

    2024年02月06日
    浏览(49)
  • Kotlin实现简单的音乐播放器

    关于音乐播放器,我真的是接触比较多,听歌作为我第一大爱好,之前也用Java设计过音乐播放器,感兴趣的同学可以阅读:Android Studio如何实现音乐播放器(简单易上手)和 Android Studio实现音乐播放器2.0 理论知识 掌握Kotlin面向对象的软件开发方面的基础知识。 巩固前期Act

    2024年02月10日
    浏览(38)
  • tkinter+爬虫+pygame实现音乐播放器

    本文将涉及爬虫(数据的获取),pygame(音乐播放器),tkinter(界面显示),将他们汇聚到一起制造一个音乐播放器,欢迎大家的订阅。 pip install requests pip install parsel pip install lxpy pip install pygame

    2024年02月20日
    浏览(36)
  • 微信小程序实现音乐播放器(1)

    代码涉及的主要文件有: app.json app.wxss pages/music/music.json pages/music/music.wxml pages/music/music.wxss pages/music/music.js 另外,你可能需要的图片资源,在这里! BackgroundAudioManager实现背景音乐 imzusheng / netease-music-uniapp

    2024年02月09日
    浏览(44)
  • Django实现简单的音乐播放器 1

    使用django框架开发一个简单的音乐播放器。 效果: 目录 环境准备 安装django 创建项目 创建应用 注册应用 配置数据库 设置数据库配置 设置pymysql库引用 创建数据库 创建数据表 生成表迁移文件 执行表迁移 配置时区 配置语言 配置子应用路由 在player应用目录下创建urls.py文件

    2024年02月12日
    浏览(37)
  • Django实现简单的音乐播放器 2

     在《Django实现简单的音乐播放器 1》前期准备的基础上开始开发。  效果: 目录 项目视图 创建视图方法 路由加载视图 加载模板 创建首页html文件 加载静态资源文件 加载静态文件 使用方法 启动服务器 加载数据表 创建表模型 生成表迁移 执行创建表 插入表数据 播放歌曲列

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包