前言

网易云音乐,QQ音乐,酷狗音乐,是我们经常会用到的音乐软件,当然有时候我们因为一首歌,需要在各大音乐平台上跳转,那么我们完全可以使用python自己打造一款音乐播放器

知识点:
1.python基础知识
2.requests库
3.time
4.pygame
5.tkinter
6.线程

环境:

windows + pycharm + python3

适合零基础的同学

1、导入工具

from PyQt5 import QtWidgets,QtGui,QtCore
from PyQt5.QtMultimedia import QMediaContent,QMediaPlayer
import qtawesome as qta
import requests,traceback

2、创建一个类

class Music(QtWidgets.QMainWindow):def __init__(self):super().__init__()# 窗口大小self.setFixedSize(400,200)# 标题self.setWindowTitle("Mark")# 初始化界面self.init_ui()# 设置样式self.custom_style()#self.playing = False # 播放状态初始化为否self.player = QMediaPlayer(self)self.timer = QtCore.QTimer()self.timer.setInterval(1000)self.timer.start()self.timer.timeout.connect(self.check_music_status)

3、设置样式

def custom_style(self):self.setStyleSheet('''#main_widget{border-radius:5px;}#play_btn,#pervious_btn,#next_btn{border:none;}#play_btn:hover,#pervious_btn:hover,#next_btn:hover{background:gray;border-radius:5px;cursor:pointer;}''')self.close_btn.setStyleSheet('''QPushButton{background:#F76677;border-radius:5px;}QPushButton:hover{background:red;}''')self.status_label.setStyleSheet('''QLabel{background:#F7D674;border-radius:5px;}''')

4、初始化UI界面

def init_ui(self):# 窗口布局self.main_widget = QtWidgets.QWidget()self.main_widget.setObjectName("main_widget")self.main_layout = QtWidgets.QGridLayout()self.main_widget.setLayout(self.main_layout)# 标题self.title_lable = QtWidgets.QLabel("乐者,音之所由生也")# 关闭按钮self.close_btn = QtWidgets.QPushButton("")  # 关闭按钮self.close_btn.clicked.connect(self.close_btn_event)self.close_btn.setFixedSize(15,15)# 音乐状态按钮self.status_label = QtWidgets.QLabel("")# self.swith_btn.clicked.connect(self.swith_background)self.status_label.setFixedSize(15,15)# 播放按钮play_icon = qta.icon("fa.play-circle",)self.play_btn = QtWidgets.QPushButton(play_icon,"")self.play_btn.setIconSize(QtCore.QSize(80, 80))self.play_btn.setFixedSize(82,82)self.play_btn.setObjectName("play_btn")self.play_btn.clicked.connect(self.play_music)# 下一首按钮next_icon = qta.icon("fa.play-circle-o")self.next_btn = QtWidgets.QPushButton(next_icon,"")self.next_btn.setIconSize(QtCore.QSize(80,80))self.next_btn.setFixedSize(82,82)self.next_btn.setObjectName("next_btn")self.next_btn.clicked.connect(self.next_music)# 进度条self.process_bar = QtWidgets.QProgressBar()self.process_value = 0self.process_bar.setValue(self.process_value)self.process_bar.setFixedHeight(5)self.process_bar.setTextVisible(False)self.main_layout.addWidget(self.close_btn,0,0,1,1)self.main_layout.addWidget(self.title_lable,0,1,1,1)self.main_layout.addWidget(self.status_label,1,0,1,1)self.main_layout.addWidget(self.play_btn, 1, 1, 1, 1)self.main_layout.addWidget(self.next_btn, 1, 2, 1, 1)self.main_layout.addWidget(self.process_bar,2,0,1,3)self.setCentralWidget(self.main_widget)# self.setWindowOpacity(0.9) # 设置窗口透明度# self.setAttribute(QtCore.Qt.WA_TranslucentBackground)  # 设置窗口背景透明self.setWindowFlag(QtCore.Qt.FramelessWindowHint)  # 隐藏边框

5、播放器各功能设置

# 关闭程序def close_btn_event(self):self.close()# 鼠标长按事件def mousePressEvent(self, event):if event.button() == QtCore.Qt.LeftButton:self.m_drag = Trueself.m_DragPosition = event.globalPos() - self.pos()event.accept()self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))# 鼠标移动事件def mouseMoveEvent(self, QMouseEvent):if QtCore.Qt.LeftButton and self.m_drag:self.move(QMouseEvent.globalPos() - self.m_DragPosition)QMouseEvent.accept()# 鼠标释放事件def mouseReleaseEvent(self, QMouseEvent):self.m_drag = Falseself.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))# 播放音乐def play_music(self):try:# 播放音乐if self.playing is False:self.playing = True # 设置播放状态为是self.play_btn.setIcon(qta.icon("fa.pause-circle")) # 设置播放图标player_status = self.player.mediaStatus() # 获取播放器状态# print("当前播放状态:",player_status)if player_status == 6:# 设置状态标签为绿色self.status_label.setStyleSheet('''QLabel{background:#6DDF6D;border-radius:5px;}''')self.player.play()else:self.next_music()# 暂停音乐else:# 设置状态为蓝色self.status_label.setStyleSheet('''QLabel{background:#0099CC;border-radius:5px;}''')self.playing = Falseself.play_btn.setIcon(qta.icon("fa.play-circle"))self.player.pause()except Exception as e:print(repr(e))# 下一首音乐def next_music(self):try:# 设置状态为黄色self.status_label.setStyleSheet('''QLabel{background:#F7D674;border-radius:5px;}''')self.playing = True  # 设置播放状态为是self.play_btn.setIcon(qta.icon("fa.pause-circle"))  # 修改播放图标self.process_value = 0  # 重置进度值# 获取网络歌曲self.get_music_thread = GetMusicThread()self.get_music_thread.finished_signal.connect(self.init_player)self.get_music_thread.start()except Exception as e:print(traceback.print_exc())# 设置播放器def init_player(self,url):# print("获取到音乐链接:",url)content = QMediaContent(QtCore.QUrl(url))self.player.setMedia(content)self.player.setVolume(50)self.player.play()self.duration = self.player.duration()  # 音乐的时长# 设置状态为绿色self.status_label.setStyleSheet('''QLabel{background:#6DDF6D;border-radius:5px;}''')# 进度条计时器self.process_timer = QtCore.QTimer()self.process_timer.setInterval(1000)self.process_timer.start()self.process_timer.timeout.connect(self.process_timer_status)# 定时器def check_music_status(self):player_status = self.player.mediaStatus()player_duration = self.player.duration()# print("音乐时间:",player_duration)# print("当前播放器状态",player_status)if player_status == 7:self.next_music()if player_duration > 0:self.duration = player_duration# 进度条定时器def process_timer_status(self):try:if self.playing is True:self.process_value += (100 / (self.duration/1000))# print("当前进度:",self.process_value)self.process_bar.setValue(self.process_value)except Exception as e:print(repr(e))

运行代码, 效果如下图:

如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的吗?说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程。获取方式,私信小编 “ 资料 ”,即可免费获取哦!

喜欢的歌曲不在一个平台怎么办?你需要一个自己专属的音乐播放器相关推荐

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

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

  2. 用户可以通过音乐播放器来选择以及学习自己喜欢的歌曲

    很多人都难以理解音乐发烧友对音乐的热爱,虽然静哥也难以理解.如今随着移动互联网的发展,音乐产品在移动端的需求并没有下降.根据CNNIC发布的第33次<中国互联网发展状况统计报告>显示,在2 ...

  3. 三款Android平台音乐播放器多方位对比

    音乐播放器作为重要的娱乐工具,在PC端异常重要,在移动端同样如此.移动端的音乐播放器很多,巨头们纷纷在这个领域布局,腾讯百度等均拥有各自的移动端音乐播放器.爱好音乐的机友们也面临较多的选择. 小编在这 ...

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

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

  5. 学习笔记:在WIN11及UBUNTU平台下的基于Tkinter、pydub、pyaudio的音乐播放器

    目录 一.总述 二.文件结构 三.打包方式 四.使用pydub进行音乐播放 main2.py all_music.py show2.py 五.pydub使用中遇到的一些问题 六.新的尝试--pyaud ...

  6. 基于智能手机Android平台音乐播放器全程开发实战

    基于android开发的智能手机平台的应用越来越多,目前也是一块比较热门的技术,本项目为基于android系统的音乐播放器项目,学习本项目的目的是为了让学员尽快掌握android领域的小应用的开发.项 ...

  7. mac 平台显示歌词最好的音乐播放器软件 —— Vox + LyricsX

    2018年10月更新: Vox + LyricsX 滚动歌词,显示歌词面板 完美支持 iTunes, Spotify, Vox, 可随播放器启动 自动搜索歌词.下载歌词(~/Music/LyricsX ...

  8. 基于android平台多媒体播放器的设计与实现,基于Android的多媒体音乐播放器设计论文...

    中图分类号:TP317 文献标识码:A 文章编号:1009-3044(2016)03-0240-02 随着计算机网络与手机的迅速发展,各种音乐资源成为人们生活中必不可少的一部分,音乐播放软件成了手机必 ...

  9. 在Winform(C++/CLR)平台设计的(本地在线)音乐播放器(基于WMP(Windows Media Player)控件实现)

    首先,祝贺阿根廷获得2022世界杯冠军! 文章目录 简介 功能展示 1.用户注册.登录.自定义主题 2.本地歌曲导入.播放并读取歌词文件 3.在线歌曲搜索.收藏.播放 4.歌词同步及桌面歌词 5.在线 ...

最新文章

  1. 阶乘分解质因数[经典题组合数学枚举质因子]
  2. Gurobi 生产计划调度学习案例(含代码实现) (生产切换、装配计划)
  3. websockets_使用用户名/密码和Servlet安全性保护WebSockets
  4. Git学习的最佳教程
  5. java中的IO操作之File类
  6. 天池csv转成grt代码里的luna的csv,pandas库来操作csv文件(pd.DataFrame,pd.concat,pd.Series,to_csv等)实现
  7. Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换
  8. 视频教程-ArcGIS与CASS在地籍建库中的结合应用-大数据
  9. 2017年数学建模c题MATLAB,数学建模C题优秀论文.doc
  10. POI生成Word水印watermark(兼容WPS)的终极解决方案
  11. 关于站内信的开发思路
  12. Android面试题【高级工程师版】
  13. 第二课,绘制几何图形
  14. HDU 6441 Find Integer
  15. Xcode 10 无开发者账号通过无线网络真机调试
  16. [Thoughts]敏捷方法大全
  17. Mysql的MMM高可用群集
  18. 南京廖华里mysql测试题1答案_MySQL数据库考试试题及答案
  19. 鸿蒙系统电动车,鸿蒙系统被刷屏,新日电动车在其中是什么角色?
  20. 上云时代,看“探路者”如何赋能云端生态?

热门文章

  1. python 知乎登录_python自动化登录知乎
  2. oracle vm virtualbox安装mac os,虚拟机VirtualBox安装MAC OS 10.12图文教程
  3. 传销泛滥地区排行,看看有没有你的家乡!
  4. PC-Lint的使用方法(一)
  5. 千遍一律的multi-statement not allow解决方案对我没用
  6. postgre数据库
  7. 移动 2G 3G 4G 5G 释义
  8. Ch3.大话移动通信之2G网络
  9. 【HTML5系列一】:HTML初识
  10. 关于tagName 属性