python3GUI--打造一款音乐播放器By:PyQt5(附下载地址)
文章目录
- 一.准备工作
- 1.PyQt5
- 2.qtawesome
- 二.预览
- 1.启动
- 2.歌曲搜索
- 3.歌曲播放
- 4.评论查看
- 5.自定义背景
- 6.设置-基本设置
- 7.设置-高级设置
- 8.定时任务
- 三.设计流程
- 1.窗口组成
- 2.主要功能结构
- 3.UI设计
- 四.代码函数概览
- 五.几个重点
- 1.音乐播放
- 2.定位当前播放音乐
- 3.歌词显示
- 4.定时任务
- 六.总结
- 七.参考
一.准备工作
大家好,本次使用PyQt5制作一款音乐播放器,简约又大方,支持在线音乐播放以及本地音乐播放,程序我打包好放在了博文后面。
1.PyQt5
PyQt5 是Digia的一套Qt5应用框架与python的结合,同时支持2.x和3.x。本教程使用的是3.x。Qt库由Riverbank Computing开发,是最强大的GUI库之一 。PyQt5是由一系列Python模块组成。超过620个类,6000函数和方法。能在诸如Unix、Windows和Mac OS等主流操作系统上运行。PyQt5有两种证书,GPL和商业证书。官方网站:https://www.riverbankcomputing.com/static/Docs/PyQt5/index.html
可以使用pip工具安装PyQt5
pip install PyQt5
安装Qt Designer图形界面开发工具
pip install PyQt5-tools
2.qtawesome
做过Web前端开发的一定对Font Awesome不会陌生,Font Awesome号称是为Bootstrap设计的完美图标字体,经常出现在各类网页中,非常流行。
这么好的资源,能不能在Qt应用程序中使用呢?答案是肯定的。而且使用起来非常简单。QtAwesome 在 PyQt 和 PySide 应用程序中启用标志性字体,例如 Font Awesome 和 Elusive Icons。它最初是 Rick Blommers的QtAwesome C++ 库的 Python 端口。
使用pip工具安装qtawesome
pip install qtawesome
二.预览
1.启动
启动后系统会自动推荐歌曲,加载一系列的歌曲、歌单。
2.歌曲搜索
搜索后,会展示对应的搜索结果,双击歌名就能够开始播放,另外还可以收藏、下载(歌曲、歌词)、定位当前播放音乐、分享音乐链接。
3.歌曲播放
这里使用一张gif动图演示音乐播放的效果,播放器下面的黑色背景是我的电脑桌面,上面是桌面歌词。
4.评论查看
评论有两种排序,最新和最热,最新是根据评论时间排序,最热是根据点赞数量排序,其中,最新排序支持翻页查看操作,评论内容是可以复制的。
5.自定义背景
在设置中可以选择一张图片作为播放器背景图。
6.设置-基本设置
在此窗口可以对播放器的一些基本参数进行设置,主要包括音乐引擎、个性颜色、背景图片等(设置窗口我没有去进行个性QSS设计,仅是实现了相关功能)。
7.设置-高级设置
高级设置包括默认下载位置设置、定时任务创建。
8.定时任务
本次创新性地加入了定时任务,用户可以手动开启定时任务,通过选择定时时间、任务类型,在第五部分定时任务部分有详细介绍
三.设计流程
1.窗口组成
主要由四个窗口组成,各个窗口相互协同,实现指定的功能。ps:桌面歌词显示也是一个窗口哦~
2.主要功能结构
使用XMind画了几张思维导图,便于了解本篇软件的主要功能。
3.UI设计
哈哈,是不是觉得很丑,这里我把所有用到的窗口堆叠到了一起,通过点击按钮,实现对应窗口的隐藏于展示,继而实现相应功能。使用QT Designer设计UI界面,免去了很多代码的撰写,也方便修改。
四.代码函数概览
五.几个重点
1.音乐播放
音乐播放的操作都是通过鼠标双击执行对应槽函数,这里着重说一下,(在线)歌曲的播放逻辑:鼠标双击QTablewidget的一行->获取歌曲id、图片id以及歌词信息->将当前歌曲以及作者姓名显示在QLabel->将歌曲添加到QPlayerList中->最后QPlayer开始播放。可能有同学会好奇,table上没有显示歌曲id、图片id啊,其实我用setColumnHidden()函数给隐藏了,同理播放本地音乐时,本地音乐文件路径也给隐藏了。
2.定位当前播放音乐
因为播放的音乐会在主界面QLabel上显示,先获取标签上的文字(记为目标),将当前播放的音乐名称用字符串切割出来(分隔符为-),再使用QTablewidget的findItems()函数,查找模式为Qt.MatchExactly(精确模式,文字完全匹配才符合要求),返回值为list,得到一些QTablewidgetItem,然后遍历这些item,获取它们的行号,获取所属行号的歌名以及歌手名,最后使用-符号连接起来,和目标文字进行比对,若完全相同,则使用setCurrentItem()选中此行,退出循环,完成定位。
3.歌词显示
首先请求网络上的歌词数据,将得到的歌词数据进行格式化,格式类似于[{“time”:1000,“lyric”:“示例歌词”}],解释一下:每段歌词都在一个字典里,字典的time是当前歌词所属时间(单位:毫秒),lyric为歌词,最后每段歌词构成歌词列表。将QPlayer的positionChanged信号绑定到指定的槽函数中,此槽函数根据当前播放进度,动态计算当前播放歌词并且高亮,展示前后共10句歌词,使用信号与槽机制,将当前播放的歌词,emit到歌词窗口,此窗口背景透明,置于桌面任务栏之上并且置于顶层,使用QSS设置当前歌词的样式,实时地展示出来。
4.定时任务
绑定checkbox的toggled事件,使用spinbox设置计时总时间(单位:分),使用combobox选择定时任务的种类。使用QTimer,设置timer的计时间隔为1秒,每隔一秒将counter计数器加一,计算剩余时间,当剩余时间为0(计数器为0)时,执行相应的定时任务。
六.总结
本次使用PyQt5开发了一款音乐播放器,支持在线音乐、本地音乐播放、歌词显示、评论查看以及定时任务设置等功能,整体实现路线比较曲折,也参考了大量的QT5相关文章(C++),软件是占用我的碎片时间开发的,创作实属不易,能点个赞吗?
七.参考
UI参考:
PyQt5 实现音乐播放器界面
QMediaPlayer的相关函数:
QT学习之QMediaPlayer
qtawesome中小图标的使用:
qtawesome的Icon Browser使用方法
QTableWidget表头添加QCheckBox:
Pyqt5 QTableWidget/QTableView 行表头添加复选框全选功能
歌词滚动展示:
基于Qt的网络音乐播放器(五)实现歌词滚动显示
窗口透明度设置:
PyQt5 - 窗体透明度+窗体背景透明
定时任务QTimer的使用:
PyQt5高级界面控件之QTimer(十一)
同款软件get:蓝奏云
python3GUI--打造一款音乐播放器By:PyQt5(附下载地址)相关推荐
- 菜鸟最爱,60行代码打造一款音乐播放器!
点上方"菜鸟学Python",选择"星标" 第467篇原创干货,第一时间送达 大家好,我是菜鸟哥! 对于小伙伴们来说,在日常的学习和工作中,很多人都喜欢边听音乐 ...
- 【开源推荐】进阶实战,从一款音乐播放器开始
0.前言 前面有同学问我,想要做一个Android 实战项目,问我有没有好的开源项目可以参考和练习? 想想自己以前也是,当项目没有什么新任务的时候,想着自己写一个实战项目来来练练手,那拿什么项目来练手 ...
- ehshig蒙文歌曲_额格希格音乐播放器_额格希格音乐播放器安卓版下载_额格希格音乐播放器最新版app下载_好趣手游网...
额格希格蒙语版是一款颇具民族特色的蒙文歌曲下载软件.额格希格音乐播放器收集了最全的蒙文歌曲曲库,各种经典的蒙文歌曲以及当前流行的蒙文流行歌全都有,深受广大内蒙用户喜爱! 软件介绍 想了解蒙语音乐或者想 ...
- Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主界面更新本地音乐
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51448597 项目源码(打赏5积分请点这边):http://download.csdn ...
- linux登陆界面卡死_Linux 上最好的五款音乐播放器
Jack Wallen 盘点他最爱的五款 Linux 音乐播放器. 不管你做什么,你都有时会来一点背景音乐.不管你是开发.运维或是一个典型的电脑用户,享受美妙的音乐都可能是你在电脑上最想做的事情之一. ...
- linux安装音乐软件教程,Linux上好用的五款音乐播放器
Jack Wallen 盘点他***的五款 Linux 音乐播放器. 不管你做什么,你都有时会来一点背景音乐.不管你是开发.运维或是一个典型的电脑用户,享受美妙的音乐都可能是你在电脑上最想做的事情之一 ...
- Electron + Vue开发一款音乐播放器
一.桌面版音乐播放器 劳动节放假了,给大家分享一个轻松的开源项目,一个基于 Electron + Vue 开发的音乐软件.项目的一大特色就是多平台搜索歌曲,并支持下载功能(有些平台的vip歌曲也可以哦 ...
- 基于H5+js开发一款音乐播放器
前言:当下音乐播放器不胜其数,为了更好的掌握一些东西,我们来自己制作一个音乐播放器. 文章目录: 一.开发环境: 二.页面视图: 1.主文件入口(首页): 2.音乐播放界面: 三.功能实现 (1).i ...
- 依米花音乐播放器php源码下载
仿依米花音乐播放器是一款简约的HTML悬浮音乐播放器,免费分享和之前分享的绚丽彩虹在线音乐播放器生成源码差不多,功能界面都是大同小异的.这款依米花音乐播放器php源码支持网易云/QQ音乐,可搭建类是与 ...
最新文章
- 近段时间佛我就偶尔无
- Git 笔记 上传文件至github
- 一和零(二维01背包)
- 学python最重要的是_基础、语法都不是最重要的,学Python最重要的是什么?编程思路!-站长资讯中心...
- 【VMCloud云平台进阶篇】Monitor监控(一)
- 从一般到特殊-C#中的对象
- java黄油刀_一篇文章玩转ButterKnife,让代码更简洁
- Mac安装MySQL后,设置初始密码
- windows优化大师怎么用_软件不能用又卸载不掉怎么办——用Windows自家的卸载工具吧(dos级卸载)...
- 计算机高级筛选操作步骤,Excel中如何应用高级筛选,高级筛选的用法?
- pacman基本命令
- 【Java--名片管理系统】
- 巧用TP-LINK无线路由器连接IPv6网络
- 基于机器学习的车牌识别系统
- SpringBoot中注入RedisTemplate实例异常解决
- 不缺流量的罗永浩、李佳琦们,为啥深耕企业微信社群?
- python 合并word文件_python读取word合并单元格
- 学术-物理-维空间:二维空间
- AM335X 内存配置
- LeetCode:974. Subarray Sums Divisible by K - Python