用Python做音乐播放器界面,python播放音乐模块

  用Python做音乐播放器界面,python播放音乐模块

  本文主要介绍如何使用Python制作一个本地音乐播放器,可以选择要播放的音乐的路径和播放方式。感兴趣的朋友可以了解一下。

  这个播放器的目的是随机或顺序播放下载的mp3文件。选择要播放的音乐的路径,并选择播放模式。经过测试,可以完美播放本地音乐。

  开始之前,先介绍一个免费下载mp3音乐的网站。如果需要,可以下载自己喜欢的音乐。当然也不需要那些身为各大音乐平台会员的大佬。

  如果缺少音乐素材,可以免费下载,准备好后放在文件夹里。

  在应用程序实现的过程中,总共使用了以下库。特别需要注意的是,这个库playsound使用的版本是1.3.0。听说其他版本播放音乐可能会有问题。您还可以将音乐播放部分更改为其他实现。

  来自PyQt5。QtWidgets导入*

  来自PyQt5。QtCore导入*

  来自PyQt5。QtGui导入*

  导入系统

  从QCandyUi导入CandyWindow

  随机导入,操作系统

  从playsound导入playsound

  首先要意识到的是播放音乐的商业逻辑。这里是通过Qt 5自带的Qt线程来实现的。目的是将音乐播放部分作为子线程运行,防止UI界面主线程阻塞。

  实现子线程的部分是同一个范式,通常都是按照这个范式实现的,屡试不爽。以前的UI桌面应用几乎都是用这种方法实现多线程的。

  类播放线程(QThread):

  finished=pyqtSignal(布尔值)

  def __init__(self,parent=None):

  超级(PlayThread,self)。__init__(父级)

  self.parent=parent

  自我工作=真

  def __del__(self):

  自我工作=假

  self.wait()

  定义运行(自身):

  music _ files=OS . listdir(self . parent . music _ file _ path . text())

  打印(音乐文件)

  对于范围(0,len(music_files) - 1):中的索引

  if . parent . Play _ type _ selected . current text()==随机播放 3360

  index=random.randint(0,len(music_files) - 1)

  打印(索引)

  playsound(OS . path . join(self . parent . music _ file _ path . text()、music_files[index])

  self.finished.emit(True)

  音乐播放的业务逻辑完成。接下来,实现UI接口。这只是一个简单的设计。不是很复杂。

  pyqt5的UI界面主要是通过组件的布局和槽函数的引用来实现的。下面是UI界面布局以及各个槽位函数的初始化和引用。以及如何调用接口主线程中的子线程。

  类MusicUI(QWidget):

  def __init__(self):

  超级(MusicUI,self)。__init__()

  self.init_ui()

  def init_ui(self):

  Self.setWindowTitle(本地音乐播放器微信官方账号:[Python集中营])

  self . setwindowicon(QIcon( music . ico ))

  self.setFixedWidth(500)

  self.setFixedHeight(100)

  hbox1=QHBoxLayout()

  self.music_file_path=QLineEdit()

  self . music _ file _ path . set readonly(True)

  self . music _ file _ BTN=q push button()

  self.music_file_bt

  n.setText(路径)

   self.music_file_btn.clicked.connect(self.music_file_btn_click)

   hbox1.addWidget(self.music_file_path)

   hbox1.addWidget(self.music_file_btn)

   hbox2 = QHBoxLayout()

   self.play_type_selected = QComboBox()

   self.play_type_selected.addItem(随机播放)

   self.play_type_selected.addItem(顺序播放)

   self.start_btn = QPushButton()

   self.start_btn.setText(开始播放)

   self.start_btn.clicked.connect(self.start_btn_click)

   hbox2.addWidget(self.play_type_selected)

   hbox2.addWidget(self.start_btn)

   vbox = QVBoxLayout()

   vbox.addLayout(hbox1)

   vbox.addLayout(hbox2)

   self.thread_ = PlayThread(self)

   self.thread_.finished.connect(self.finished)

   self.setLayout(vbox)

   def music_file_btn_click(self):

   dir = QFileDialog.getExistingDirectory(self, "选择文件夹", os.getcwd())

   self.music_file_path.setText(dir)

   def start_btn_click(self):

   self.start_btn.setEnabled(False)

   self.thread_.start()

   def finished(self,finished):

   if finished is True:

   self.start_btn.setEnabled(True)

  # 最后,使用mian函数将界面布局的整个过程加入到主体循环中就大功告成了。

  if __name__ == __main__:

   app = QApplication(sys.argv)

   w = CandyWindow.createWindow(MusicUI(), theme=blue, title=本地音乐播放器 公众号:[Python 集中营],

   ico_path=音乐.ico)

   w.show()

   sys.exit(app.exec_())

  完整代码

  

# -*- coding:utf-8 -*-

  # @author Python 集中营

  # @date 2022/4/23

  # @file test10.py

  # done

  # python 本地音乐播放器制作过程(附完整源码)

  # 文摘:通过pyqt5多线程制作简单的本地音乐播放器...

  # 制作这个播放器的目的是为了将下载下来的mp3文件进行随机或是顺序的播放。选择需要播放的音乐的路径,选择播放方式,

  # 经过测试可以完美的播放本地音乐。

  # 在开始之前介绍一个免费下载mp3音乐的网站,有需要的可以下载自己喜欢的音乐。当然有各大音乐平台会员的大佬就不需要了。

  # http://music.y444.cn/#/

  # 缺少音乐素材的可以去免费下载即可,准备好音乐素材后将其放到一个文件夹下面即可。

  # 在应用实现过程中,总共使用了下面这些库,特别需要注意的是这个库playsound使用的版本是1.3.0,听说其他版本在播放音乐时可能存在问题。

  # 也可以将播放音乐的部分换成其他的实现方式。

  from PyQt5.QtWidgets import *

  from PyQt5.QtCore import *

  from PyQt5.QtGui import *

  import sys

  from QCandyUi import CandyWindow

  import random, os

  from playsound import playsound

  # 最先实现的是播放音乐的业务逻辑,这里是采用pyqt5自带的QThread线程来实现的,目的是将播放音乐的部分

  # 作为一个子线程来运行,防止与UI界面的主线程产生阻塞。

  # 实现子线程的部分是一样的范式,一般情况下按照这种范式实现,屡试不爽。在前面的UI桌面应用中几乎都是使用这种方式来实现多线程的。

  class PlayThread(QThread):

   finished = pyqtSignal(bool)

   def __init__(self, parent=None):

   super(PlayThread, self).__init__(parent)

   self.parent = parent

   self.working = True

   def __del__(self):

   self.working = False

   self.wait()

   def run(self):

   music_files = os.listdir(self.parent.music_file_path.text())

   print(music_files)

   for index in range(0, len(music_files) - 1):

   if self.parent.play_type_selected.currentText() == 随机播放:

   index = random.randint(0, len(music_files) - 1)

   print(index)

   playsound(os.path.join(self.parent.music_file_path.text(), music_files[index]))

   self.finished.emit(True)

  # 音乐播放的业务逻辑实现完成了,接下来来实现UI界面的部分。应用就是简单的设计了一下不是很复杂。

  # 音乐播放器UI.png

  # pyqt5的UI界面的实现方式主要是组件的布局和槽函数的引用,下面是UI界面布局及各个槽函数的初始化及引用。

  # 以及如何界面的主线程中调用子线程的使用。

  class MusicUI(QWidget):

   def __init__(self):

   super(MusicUI, self).__init__()

   self.init_ui()

   def init_ui(self):

   self.setWindowTitle(本地音乐播放器 公众号:[Python 集中营])

   self.setWindowIcon(QIcon(音乐.ico))

   self.setFixedWidth(500)

   self.setFixedHeight(100)

   hbox1 = QHBoxLayout()

   self.music_file_path = QLineEdit()

   self.music_file_path.setReadOnly(True)

   self.music_file_btn = QPushButton()

   self.music_file_btn.setText(路径)

   self.music_file_btn.clicked.connect(self.music_file_btn_click)

   hbox1.addWidget(self.music_file_path)

   hbox1.addWidget(self.music_file_btn)

   hbox2 = QHBoxLayout()

   self.play_type_selected = QComboBox()

   self.play_type_selected.addItem(随机播放)

   self.play_type_selected.addItem(顺序播放)

   self.start_btn = QPushButton()

   self.start_btn.setText(开始播放)

   self.start_btn.clicked.connect(self.start_btn_click)

   hbox2.addWidget(self.play_type_selected)

   hbox2.addWidget(self.start_btn)

   vbox = QVBoxLayout()

   vbox.addLayout(hbox1)

   vbox.addLayout(hbox2)

   self.thread_ = PlayThread(self)

   self.thread_.finished.connect(self.finished)

   self.setLayout(vbox)

   def music_file_btn_click(self):

   dir = QFileDialog.getExistingDirectory(self, "选择文件夹", os.getcwd())

   self.music_file_path.setText(dir)

   def start_btn_click(self):

   self.start_btn.setEnabled(False)

   self.thread_.start()

   def finished(self,finished):

   if finished is True:

   self.start_btn.setEnabled(True)

  # 最后,使用mian函数将界面布局的整个过程加入到主体循环中就大功告成了。

  if __name__ == __main__:

   app = QApplication(sys.argv)

   w = CandyWindow.createWindow(MusicUI(), theme=blue, title=本地音乐播放器 公众号:[Python 集中营],

   ico_path=音乐.ico)

   w.show()

   sys.exit(app.exec_())

  

  以上就是基于Python实现本地音乐播放器的制作的详细内容,更多关于Python本地音乐播放器的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: