Kivy应用程序退出屏幕更改

时间:2016-03-02 14:48:54

标签: python python-3.x kivy

我正在尝试将我的代码从.kv文件全部移植到Python(这对我来说似乎更容易)。我有两个屏幕,我一直在kv文件中使用root.manager.current = "main"切换到下一个屏幕。但是,当在Python代码中写这个位时,我遇到了我的应用程序的崩溃。这是我的代码:

class CustomScreenManager(ScreenManager):
    def switch_view(self):
        self.current = 'main'

class Intro(Screen):
    pass

class Chat(Screen):
    pass

class ChatApp(App):
    def build(self):
        Screens = CustomScreenManager(transition = NoTransition())

        intro = Intro()
        chat = Chat(name = "main")

        bt1_intro = Button(on_press = Screens.switch_view())

        intro.add_widget(bt1_intro)

        Screens.add_widget(intro)
        Screens.add_widget(chat)

        return Screens

if __name__ == "__main__":
    ChatApp().run()
    ChatApp().screen_manager

我也尝试了switch_to方法但它也崩溃了应用程序。我该怎么做才能避免崩溃并获得预期的行为?提前谢谢。

1 个答案:

答案 0 :(得分:1)

switch_view的定义更改为

def switch_view(self, *args):

并添加Button

bt1_intro = Button(on_press = Screens.switch_view)

应用程序崩溃是因为原始分配的bt1_intro switch_view被调用(而不是传递给函数),并且当时屏幕不存在。