Reputation: 13
I set up a Screen in a Kivy ScreenManager (myScreen is just a class that inherits Screen)
class firstScreen(myScreen):
def __init__(self,**kwargs):
super(firstScreen, self).__init__(**kwargs)
self.name = "first"
self.add_widget(Button(on_release = switchScreens("second")))
I also set up a second screen:
class secondScreen(myScreen):
def __init__(self,**kwargs):
super(secondScreen, self).__init__(**kwargs)
self.name = "second"
I then set up my ScreenManager:
sm = ScreenManager()
sm.add_widget(firstScreen())
sm.add_widget(secondScreen())
And here is the code for switchScreens:
def switchScreens(next):
sm.current = next
When I run sm, I get the following error:
kivy.uix.screenmanager.ScreenManagerException: No Screen with name "second".
This seems wrong to me, since I added the secondScreen() to sm, with a name of "second".
How can I get the Button on firstScreen to correctly send the app to secondScreen?
Upvotes: 1
Views: 1254
Reputation: 630
Define the names inside here, not the screen classes:
sm = ScreenManager()
sm.add_widget(firstScreen())
sm.add_widget(secondScreen())
above should be:
sm = ScreenManager()
sm.add_widget(firstScreen(name="first"))
sm.add_widget(secondScreen(name="second"))
Upvotes: 1