文章目录

  • 一.准备工作
    • 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(附下载地址)相关推荐

  1. 菜鸟最爱,60行代码打造一款音乐播放器!

    点上方"菜鸟学Python",选择"星标" 第467篇原创干货,第一时间送达 大家好,我是菜鸟哥! 对于小伙伴们来说,在日常的学习和工作中,很多人都喜欢边听音乐 ...

  2. 【开源推荐】进阶实战,从一款音乐播放器开始

    0.前言 前面有同学问我,想要做一个Android 实战项目,问我有没有好的开源项目可以参考和练习? 想想自己以前也是,当项目没有什么新任务的时候,想着自己写一个实战项目来来练练手,那拿什么项目来练手 ...

  3. ehshig蒙文歌曲_额格希格音乐播放器_额格希格音乐播放器安卓版下载_额格希格音乐播放器最新版app下载_好趣手游网...

    额格希格蒙语版是一款颇具民族特色的蒙文歌曲下载软件.额格希格音乐播放器收集了最全的蒙文歌曲曲库,各种经典的蒙文歌曲以及当前流行的蒙文流行歌全都有,深受广大内蒙用户喜爱! 软件介绍 想了解蒙语音乐或者想 ...

  4. Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主界面更新本地音乐

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51448597 项目源码(打赏5积分请点这边):http://download.csdn ...

  5. linux登陆界面卡死_Linux 上最好的五款音乐播放器

    Jack Wallen 盘点他最爱的五款 Linux 音乐播放器. 不管你做什么,你都有时会来一点背景音乐.不管你是开发.运维或是一个典型的电脑用户,享受美妙的音乐都可能是你在电脑上最想做的事情之一. ...

  6. linux安装音乐软件教程,Linux上好用的五款音乐播放器

    Jack Wallen 盘点他***的五款 Linux 音乐播放器. 不管你做什么,你都有时会来一点背景音乐.不管你是开发.运维或是一个典型的电脑用户,享受美妙的音乐都可能是你在电脑上最想做的事情之一 ...

  7. Electron + Vue开发一款音乐播放器

    一.桌面版音乐播放器 劳动节放假了,给大家分享一个轻松的开源项目,一个基于 Electron + Vue 开发的音乐软件.项目的一大特色就是多平台搜索歌曲,并支持下载功能(有些平台的vip歌曲也可以哦 ...

  8. 基于H5+js开发一款音乐播放器

    前言:当下音乐播放器不胜其数,为了更好的掌握一些东西,我们来自己制作一个音乐播放器. 文章目录: 一.开发环境: 二.页面视图: 1.主文件入口(首页): 2.音乐播放界面: 三.功能实现 (1).i ...

  9. 依米花音乐播放器php源码下载

    仿依米花音乐播放器是一款简约的HTML悬浮音乐播放器,免费分享和之前分享的绚丽彩虹在线音乐播放器生成源码差不多,功能界面都是大同小异的.这款依米花音乐播放器php源码支持网易云/QQ音乐,可搭建类是与 ...

最新文章

  1. 近段时间佛我就偶尔无
  2. Git 笔记 上传文件至github
  3. 一和零(二维01背包)
  4. 学python最重要的是_基础、语法都不是最重要的,学Python最重要的是什么?编程思路!-站长资讯中心...
  5. 【VMCloud云平台进阶篇】Monitor监控(一)
  6. 从一般到特殊-C#中的对象
  7. java黄油刀_一篇文章玩转ButterKnife,让代码更简洁
  8. Mac安装MySQL后,设置初始密码
  9. windows优化大师怎么用_软件不能用又卸载不掉怎么办——用Windows自家的卸载工具吧(dos级卸载)...
  10. 计算机高级筛选操作步骤,Excel中如何应用高级筛选,高级筛选的用法?
  11. pacman基本命令
  12. 【Java--名片管理系统】
  13. 巧用TP-LINK无线路由器连接IPv6网络
  14. 基于机器学习的车牌识别系统
  15. SpringBoot中注入RedisTemplate实例异常解决
  16. 不缺流量的罗永浩、李佳琦们,为啥深耕企业微信社群?
  17. python 合并word文件_python读取word合并单元格
  18. 学术-物理-维空间:二维空间
  19. AM335X 内存配置
  20. LeetCode:974. Subarray Sums Divisible by K - Python

热门文章

  1. 服务器文件夹共享到本地,云服务器共享本地文件夹
  2. PPT打开出错/可尝试修复此演示文稿
  3. JavaSE Lambda 表达式
  4. 转载:深入浅出的讲解傅里叶变换
  5. Android蓝牙开发系列文章-蓝牙设备类型知多少?
  6. Java云同桌学习系列(十九)——Linux系统
  7. QCC512x QCC302x 延时函数 (阻塞与非阻塞)
  8. linux:使用yum安装_首次使用Linux:30个安装案例
  9. 12306 余票检测软件
  10. 萌宠经济升温,宠物摄影师成为热门新职业-捷径系统