John Doe
John Doe

Reputation: 13

Kivy Error: No Screen with Name

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

Answers (1)

AlexAndDraw
AlexAndDraw

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

Related Questions