Python Pygame如何获取上一首歌曲

Python Pygame如何获取上一首歌曲,python,python-3.x,raspberry-pi,pygame,raspberry-pi3,Python,Python 3.x,Raspberry Pi,Pygame,Raspberry Pi3,如果用户决定按下按钮,我想让程序转到上一首歌(请注意,我是在树莓圆周率上这样做的)。问题是我不知道如何让程序进入前一首歌。我已经到了可以播放下一首歌的地步,我还尝试了“pygame.mixer.music.rewind()”,但这只会播放到当前歌曲的开头 def prevSong(): print("musiclist is ",musiclist) print('Playing previous song') pygame.mixer.music.rewind() d

如果用户决定按下按钮,我想让程序转到上一首歌(请注意,我是在树莓圆周率上这样做的)。问题是我不知道如何让程序进入前一首歌。我已经到了可以播放下一首歌的地步,我还尝试了“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()

正如您所添加的,您应该创建一个包含所有播放歌曲的数组。为了能够正确访问上一个,您还应该有一个变量来告诉您当前在列表中的位置

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)

同意将歌曲保存在列表中,您还可以制作一个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来说太大,则对其执行垃圾收集。您甚至可以设置歌曲列表限制并通过类进行处理。

您应该将歌曲保存在数组中,这样您只需获取数组的最后一个元素并加载它。@Liorahaydon我对帖子做了一些编辑。我茫然地问我该如何把这首歌追加到播放中。@LioraHaydontIt也给了我一个错误,我无法从RWops中读取