Kivy Error: No Screen with Name

岁酱吖の 提交于 2021-01-28 08:52:27

问题


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?


回答1:


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"))


来源:https://stackoverflow.com/questions/48292298/kivy-error-no-screen-with-name

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!