如果用户决定按下按钮,我想让程序转到上一首歌(请注意我在覆盆子pi上执行此操作)。问题是我无法弄清楚如何让程序进入上一首歌。我到了下一首歌的地步,我也试过了#pygame.mixer.music.rewind()'但这只是当前歌曲的开头。
def prevSong():
print("musiclist is ",musiclist)
print('Playing previous song')
pygame.mixer.music.rewind()
def nextSong():
pygame.mixer.init()
print("musiclist is ",musiclist)
print(' ')
random_song = random.choice(musiclist)
randSong = pygame.mixer.music.load(random_song)
print('Playing next song: {}'.format(random_song))
pygame.mixer.music.play()
musiclist.remove(random_song)
我希望对prevSong()进行更改。函数nextSong()是一个继续的例子。有什么建议?感谢
编辑1:好的所以我创建了一个名为' prevSongList'的新列表,但是我无法理解我应该如何添加这首歌
def playMusic():
pygame.mixer.init()
print("musiclist is ",musiclist)
print(' ')
random_song = random.choice(musiclist)
randSong = pygame.mixer.music.load(random_song)
prev = prevSongList.append(randSong)
print('Playing song: {}'.format(random_song))
pygame.mixer.music.play()
答案 0 :(得分:2)
同意你应该将歌曲保存在一个列表中,你也可以制作一个dj类,这样你就可以将它扩展到那个
class DJSongify:
def __init__(self):
self.previous = location.music
self.songlist = []
def songlist_continue(self,song)
self.previous = song
self.songlist.append(song)
这可以让你跟踪并在你的DJ课上做其他操作,比如如果它对Rasberry Pi来说太大了就在歌曲列表上进行垃圾收集。您甚至可以设置歌曲列表限制并通过该类处理它。
答案 1 :(得分:1)
就像你添加的那样,你应该创建一个包含所有播放歌曲的数组。为了能够正确访问前一个,您还应该有一个变量,告诉您当前在列表中的位置。
在prevSong
功能中,您只需在列表中编入索引之前就可以访问该歌曲。类似的东西:
def prevSong():
print("musiclist is ",musiclist)
print('Playing previous song')
#you should add a if there in case there is no previous song
currentIndex-- #remove 1 to the current index
lastSong = prevSongList[currentIndex]
#play the song
pygame.mixer.music.load(lastSong)
在nextSong
功能中,在添加随机歌曲之前,请检查是否还没有currentIndex+1
的歌曲。
关于你的错误,我认为是因为行
prev = prevSongList.append(randSong)
我不确定pygame.mixer.music.load(random_song)
返回的内容但它可能不是字符串,您应该使用该歌曲的名称:
prev = prevSongList.append(random_song)