Я разрабатывал приложение с использованием python и kivymd.
Это простой музыкальный проигрыватель, который находит всю музыку в телефоне и показывает ее в виде списка.
И когда мы нажимаем на название песни, она воспроизводится. песня Но проблема в том, что песни перекрываются, а затем продолжают перекрываться.
Я хочу, чтобы когда мы нажимали на любую другую песню, предыдущая останавливалась, а та, по которой щелкнули, начинала играть
Мой предыдущий код, в котором нет функции остановки-:
from kivy.lang import Builder
from kivymd.uix.list import OneLineListItem
from kivymd.app import MDApp
from kivy.core.audio import SoundLoader
import os
helper_string = """
Screen:
BoxLayout:
orientation: "vertical"
ScrollView:
MDList:
id: scroll
"""
class MainApp(MDApp):
def build(self):
screen = Builder.load_string(helper_string)
return screen
def on_start(self):
for root, dirs, files in os.walk('C:/'):
for file in files:
if file.endswith('.mp3'):
required_file = file
the_location = os.path.abspath(required_file)
self.root.ids.scroll.add_widget(OneLineListItem(text=required_file, on_release=self.play_song))
# print(required_file)
def play_song(self, onelinelistitem):
# print('play:', onelinelistitem.text)
the_song_path = os.path.abspath(onelinelistitem.text)
sound = SoundLoader.load(the_song_path)
if sound:
sound.play()
print(the_song_path)
MainApp().run()
Мой новый код, в котором я попробовал простое исправление с помощью списков, и оно также не сработало -:
from kivy.lang import Builder
from kivymd.uix.list import OneLineListItem
from kivymd.app import MDApp
from kivy.core.audio import SoundLoader
import os
helper_string = """
Screen:
BoxLayout:
orientation: "vertical"
ScrollView:
MDList:
id: scroll
"""
class MainApp(MDApp):
def build(self):
screen = Builder.load_string(helper_string)
return screen
def on_start(self):
for root, dirs, files in os.walk('C:/'):
for file in files:
if file.endswith('.mp3'):
required_file = file
the_location = os.path.abspath(required_file)
self.root.ids.scroll.add_widget(OneLineListItem(text=required_file, on_release=self.play_song))
# print(required_file)
def play_song(self, onelinelistitem):
SongList = []
# print('play:', onelinelistitem.text)
the_song_path = onelinelistitem.secondary_text
SongList.append(the_song_path)
if len(SongList) == 1:
sound = SoundLoader.load(SongList[0])
if sound:
sound.play()
print(the_song_path)
if len(SongList) > 1:
SoundLoader.load(SongList[0]).stop()
sound = SoundLoader.load(SongList[1])
if sound:
sound.play()
print(the_song_path)
MainApp().run()
????Да, я знаю, что это было очень плохое исправление
Пожалуйста, кто-нибудь может помочь мне с этой проблемой
Заранее большое спасибо< /сильный>