SoundLoader在kivy和python中重叠歌曲。如何在python kivy中播放歌曲来代替其他歌曲?

SoundLoader在kivy和python中重叠歌曲。如何在python kivy中播放歌曲来代替其他歌曲?,python,python-3.x,kivy,kivy-language,android-music-player,Python,Python 3.x,Kivy,Kivy Language,Android Music Player,我一直在使用python和kivymd开发一个应用程序 这是一个简单的音乐播放器应用程序,可查找手机中的所有音乐并将其显示为列表 当我们点击歌曲名称时,它将播放歌曲 但问题是歌曲重叠,然后继续重叠 我想要的是,当我们点击任何其他歌曲时,前一首停止播放,点击的歌曲开始播放 我以前没有停止功能的代码-: 我的新代码,其中我尝试了使用列表进行简单修复,但也没有成功-: 您的SongList是方法play_song()中的一个局部变量,每次调用play_song()时都设置为[]。因此,条件: if l

我一直在使用python和kivymd开发一个应用程序
这是一个简单的音乐播放器应用程序,可查找手机中的所有音乐并将其显示为列表
当我们点击歌曲名称时,它将播放歌曲 但问题是歌曲重叠,然后继续重叠
我想要的是,当我们点击任何其他歌曲时,前一首停止播放,点击的歌曲开始播放

我以前没有停止功能的代码-:

我的新代码,其中我尝试了使用列表进行简单修复,但也没有成功-:


您的
SongList
是方法
play_song()
中的一个局部变量,每次调用
play_song()
时都设置为
[]
。因此,条件:

if len(SongList) > 1:
永远不会是真的。处理这个问题的一个简单方法是定义一个实例变量,该变量保存当前播放的声音,我们将其称为
self.sound
。在
build()
方法中初始化它:

def build(self):
    self.sound = None
    screen = Builder.load_string(helper_string)
    return screen
def play_song(self, onelinelistitem):
    the_song_path = onelinelistitem.secondary_text
    if self.sound:
        self.sound.stop()
    self.sound = SoundLoader.load(the_song_path)
    if self.sound:
        self.sound.play()
    print(the_song_path)
并在
play_song()
方法中使用它:

def build(self):
    self.sound = None
    screen = Builder.load_string(helper_string)
    return screen
def play_song(self, onelinelistitem):
    the_song_path = onelinelistitem.secondary_text
    if self.sound:
        self.sound.stop()
    self.sound = SoundLoader.load(the_song_path)
    if self.sound:
        self.sound.play()
    print(the_song_path)