Я пытаюсь вызвать def в классе Screen из Screenmanager из класса Screenmanager, но не могу.
Я хочу создать макет блока и поместить кнопку в этот блок бокса при запуске приложения. как только вызывается ScreenManager, он становится экраном по умолчанию. Я хочу сделать это, чтобы я мог переключаться между несколькими экранами с помощью self.parent.current = 'Screen Name' при нажатии кнопки
Вот код
class Manager(ScreenManager):
def __init__(self):
self.add_widget(Scr1().make_button())
class Scr1(Screen):
def __init__(self):
self.layout = BoxLayout(orientation = 'vertical')
self.button = Button(text='hello')
self.layout.add_widget(self.button)
def make_button(self, layout):
return self.layout
class MainApp(App):
def build(self):
sm =Manager()
s1 = Scr1()
sm.add_widget=s1
return sm
if __name__ == "__main__":
MainApp().run()
Здесьэто ошибка, которую я получаю
Traceback (most recent call last):
File "C:/Users/user/Desktop/CarsonMusic/Learn.py", line 43, in <module>
MainApp().run()
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\kivy\app.py", line 829, in run
root = self.build()
File "C:/Users/user/Desktop/CarsonMusic/Learn.py", line 37, in build
sm =Manager()
File "C:/Users/user/Desktop/CarsonMusic/Learn.py", line 24, in __init__
self.add_widget(Scr1().make_button())
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\kivy\uix\screenmanager.py", line 979, in add_widget
'ScreenManager accepts only Screen widget.')
kivy.uix.screenmanager.ScreenManagerException: ScreenManager accepts only Screen widget.
Я знаю, что, вероятно, совершаю глупую ошибку, но может ли кто-нибудь мне помочь?