主要内容 #
- 文件夹读取模块
1. 文件夹读取模块 #
该模块的功能是读取指定文件夹下的所有音乐文件
并存储到指定变量中,然后在界面中展示音乐列表。
以下程序完成了读取文件夹并且显示在界面上的功能:
def show_music_list(self): """ 显示文件夹中所有音乐 """ self.qlist.clear() # 将之前的音乐列表清空 for song in os.listdir(self.cur_path): # 循环指定文件夹下的所有文件 if song.split('.')[-1] in self.song_formats: # 判断是否符合音乐文件的后缀 self.songs_list.append([song, os.path.join( self.cur_path, song).replace('\\', '/')]) # 路径中的符号替换 self.qlist.addItem(song) # 全路径下的音乐文件加入到列表中,列表存储歌曲文件名和全路径 self.qlist.setCurrentRow(0) # 设置当前行数是第0个,也就是列表中的第一个 if self.songs_list: self.cur_playing_song = self.songs_list[self.qlist.currentRow( )][-1] # 设置设定好的当前歌曲 def set_cur_playing(self): """ 设置当前播放的音乐 """ self.cur_playing_song = self.songs_list[self.qlist.currentRow()][-1] self.player.setMedia(QMediaContent(QUrl(self.cur_playing_song))) def open_dir(self): """ 打开文件夹 """ self.cur_path = QFileDialog.getExistingDirectory( self, "选取文件夹", self.cur_path) # 弹出文件夹选项,手工设置指定文件夹,并且获取对应路径 if self.cur_path: self.show_music_list() # 遍历文件夹下所有文件,将其中的音乐文件存储到qlist中 # 如下是播放器启动时的设置 self.cur_playing_song = '' self.set_cur_playing() # 获取当前播放音乐 self.time_slider_1.setText('00:00') # 播放时长设置0 self.time_slider_2.setText('00:00') # 总时长设置为0 self.play_slider.setSliderPosition(0) # 播放滑动条置放在起始位置 self.is_pause = True # 默认暂停播放 self.play_button.setText('播放') # 将播放键按钮文字设置为播放
完成该功能后,需要设计一个按钮,并将该按钮与上述功能进行连接。
即点击按钮,就可以打开指定文件夹。
以下程序实现按钮与功能的连接(即信号传递)
# 在self.init()中找到如下这部分代码 # --打开文件夹按钮 self.open_button = QPushButton('打开文件夹', self) # 打开文件夹按钮 # 并且在下一行增加如下这段代码 self.open_button.clicked.connect(self.open_dir)
将以上所有代码加入到MusicPlayer类中,并且在self.init()函数中做好相应的修改
运行代码,查看具体效果。
2. 小结 #
- 本章完成了读取文件夹,获取所有音乐文件,并且保存到列表中,最后展示在界面上。
习题 #
- 无