当前位置: 首页 > 后端技术 > Python

使用python创建你自己的音乐播放器

时间:2023-03-26 16:05:14 Python

网易云音乐、QQ音乐、酷狗音乐是我们经常使用的音乐软件。当然有时候我们因为一首歌需要跳转各大音乐平台,那么我们可以使用python制作一个音乐播放器知识点:1.python基础知识2.requests库3.time4.pygame5.tkinter6.线程环境:windows+pycharm+python3适合零基础的同学1.从PyQt5导入工具importQtWidgets,QtGui,QtCorefromPyQt5。QtMultimediaimportQMediaContent,QMediaPlayerimportqtawesomeasqtaimportrequests,traceback2,创建类classMusic(QtWidgets.QMainWindow):def__init__(self):super().__init__()#windowsizeself.setFixedSize(400,200)#titleself.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.设置样式defcustom_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;}''')自己。close_btn.setStyleSsheet('''QPushButton{background:#F76677;border-radius:5px;}QPushButton:hover{background:red;}''')self.status_label.setStyleSheet('''QLabel{background:#F7D674;border-radius:5px;}''')4.初始化UI界面definit_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)#Titleself.title_lable=QtWidgets.QLabel("Musicist,thesourceofsound")#关闭按钮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)#下一个点击外汇百科http://www.fx61.com/definitionsnext_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、Player功能设置#关闭程序defclose_btn_event(self):self.close()#鼠标长按事件defmousePressEvent(self,event):ifevent.button()==QtCore.Qt.LeftButton:self.m_drag=Trueself.m_DragPosition=event.globalPos()-self.pos()event.accept()self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))#鼠标移动事件defmouseMoveEvent(self,QMouseEvent):ifQtCore.Qt.LeftButtonandself.m_drag:self.move(QMouseEvent.globalPos()-self.m_DragPosition)QMouseEvent.accept()#鼠标释放事件defmouseReleaseEvent(self,QMouseEvent):self.m_drag=Falseself.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))#播放音乐defplay_music(self):try:#播放音乐如果self.playing为False:self.playing=True#设置播放状态为self.play_btn.setIcon(qta.icon("fa.pause-circle"))#设置播放图标player_status=self.player.mediaStatus()#获取播放器状态#print("当前播放状态:“,player_status)ifplayer_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()exceptexceptase:print(repr(e))#Nextmusicdefnext_music(self):try:#设置状态为黄色self.status_label.setStyleSheet('''QLabel{background:#F7D674;border-radius:5px;}''')self.playing=True#设置播放status为Yesself.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()exceptExceptionase:print(traceback.print_exc())#设置播放器definit_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)#timerdefcheck_music_status(self):player_status=self.player.mediaStatus()player_duration=self.player.duration()#print("音乐时间:",player_duration)#print(“当前玩家状态”,player_status)ifplayer_status==7:self.next_music()ifplayer_duration>0:self.duration=player_duration#progressbartimerdefprocess_timer_status(self):try:ifself.playingisTrue:self.process_value+=(100/(self.duration/1000))#print("Currentprogress:",self.process_value)self.process_bar.setValue(self.process_value)except异常为e:print(repr(e))