При переходе из MenuScreen в MusScreen появляется белый экран, хотя в MusScreen должен быть список с песнями из пути 'C:/Users/yan/PycharmProjects/ivy_test'.
Я попробовал перекинуть код из MusScreen в MyApp, но в этом случае выходит ошибка.
Что можно сделать? Буду благодарен за помощь.
from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import ScreenManager
from kivy.uix.screenmanager import Screen
import os
from kivy.core.audio import SoundLoader
from kivymd.uix.list import OneLineListItem
screen_helper = """
ScreenManager:
MenuScreen:
MusScreen:
<MenuScreen>:
name: 'menu'
MDRectangleFlatButton:
text: 'Prof'
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
on_press: root.manager.current = 'prof'
MDIconButton:
icon: 'image/menu.png'
pos_hint: {'center_x': 0.9, 'center_y': 0.98}
on_release: root.manager.current = 'prof'
<MusScreen>:
name: 'prof'
BoxLayout:
orientation: "vertical"
ScrollView:
MDList:
id: scroll
"""
class MenuScreen(Screen):
pass
class MusScreen(Screen):
def on_start(self):
for root, dirs, files in os.walk('C:/Users/yan/PycharmProjects/ivy_test'):
for file in files:
if file.endswith('.mp3'):
required_file = file
the_location = os.path.abspath(os.path.join(root, required_file))
self.root.ids.scroll.add_widget(OneLineListItem(text=the_location, on_release=self.play_song))
print(required_file, the_location)
def play_song(self, onelinelistitem):
print('play:', onelinelistitem.text)
the_song_path = os.path.abspath(f'{onelinelistitem.text}.mp3')
if self.sound:
self.sound.stop()
self.sound = SoundLoader.load(the_song_path)
if self.sound:
self.sound.play()
print(the_song_path)
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(MusScreen(name='prof'))
class MyApp(MDApp):
def build(self):
scren = Builder.load_string(screen_helper)
return scren
if __name__ == '__main__':
MyApp().run()