通过选择音乐所在文件夹(会对下层进行校验MP3文件),点击播放第一个,选择播发下一个或暂停(再点恢复)
之前存在问题,文件内无法循环选择,已修改
import sys from PyQt5 import QtWidgets, QtCore, QtGui from PyQt5.QtWidgets import * import os import re import time import pygame pygame.mixer.init() class picture(QWidget): def __init__(self): super(picture, self).__init__() self.path = [] self.i = 0 self.zct_k =800 self.zct_g =200 #主体窗口的宽度高度 self.resize(self.zct_k, self.zct_g) #主体窗口标题 self.setWindowTitle("音乐播放") label_bj = 'border-width:2px;border-style:solid;font-size:15px;' \ 'border-color:rgb(255,170,0);background-color:rgb(100,149,237);' self.label2 = QLabel(self) self.label2.setText("显示文件所在路径") self.label2.move(120, 30) self.label2.setFixedSize(650, 22) self.label2.setStyleSheet(label_bj) #打开图片_按钮 btn = QPushButton(self) btn.setText("选择文件夹") #打开图片 按钮 显示位置 btn.move(30, 30) btn.clicked.connect(self.openimage) self.label3 = QLabel(self) self.label3.setText("显示播放文件") self.label3.move(120, 60) self.label3.setFixedSize(650, 22) self.label3.setStyleSheet(label_bj) # 打开图片_按钮 btn_bf = QPushButton(self) btn_bf.setText("播放_按钮") # 打开图片 按钮 显示位置 btn_bf.move(30, 90) btn_bf.clicked.connect(self.ope_bf) # 打开图片_按钮 btn_xys = QPushButton(self) btn_xys.setText("播放下一首") # 打开图片 按钮 显示位置 btn_xys.move(120, 90) btn_xys.clicked.connect(self.ope_xys) # 打开图片_按钮 btn_zt = QPushButton(self) btn_zt.setText("播放暂停") # 打开图片 按钮 显示位置 btn_zt.move(210, 90) btn_zt.clicked.connect(self.ope_zt) def openimage(self): """图片打开窗体""" #记录打开文件夹信息 imgName_bc = QFileDialog.getExistingDirectory(self, "选择文件夹", "") print(imgName_bc) # 在页面显示打开的图片路径 self.label2.setText(imgName_bc) #打开文件路径 并被拉伸到窗体显示大小 list = get_filelist(imgName_bc, []) for e in list: result = eval(repr(e).replace('\\\\', '/')) ret = re.match(r".*MP3", result) if ret: #将MP3文件导入 self.path.append(ret.group()) else: self.label3.setText('无适合文件') self.lists = len(self.path) self.label3.setText(self.path[self.i]) def ope_xys(self): if self.i < self.lists-1: self.i = self.i + 1 self.label3.setText(self.path[self.i]) pygame.mixer.music.load(self.path[self.i]) pygame.mixer.music.play() else: self.i = 0 self.label3.setText(self.path[self.i]) pygame.mixer.music.load(self.path[self.i]) pygame.mixer.music.play() def ope_zt(self): if self.label3.text() == '播放暂停': pygame.mixer.music.load(self.path[self.i]) # 播放载入的音乐。该函数立即返回,音乐播放在后台进行。 pygame.mixer.music.play() self.label3.setText(self.path[self.i]) else: pygame.mixer.music.stop() self.label3.setText("播放暂停") def ope_bf(self): """音频播放""" if self.label2.text() == '显示文件所在路径': self.label3.setText('请选择播放的文件') elif self.label3.text() == '显示文件所在路径': self.label3.setText('请选择播放的文件') else: pygame.mixer.music.load(self.path[self.i]) # 播放载入的音乐。该函数立即返回,音乐播放在后台进行。 pygame.mixer.music.play() def get_filelist(dir , Filelist): """导入文件夹,读取内容""" newDir = dir if os.path.isfile(dir): Filelist.append(dir) elif os.path.isdir(dir): for s in os.listdir(dir): newDir = os.path.join(dir,s) get_filelist(newDir,Filelist) pass return Filelist if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) #窗体显示 my = picture() my.show() sys.exit(app.exec_())