2016-03-02 78 views
1

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

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方法,但它也崩溃的应用程序。我能做些什么来避免崩溃并获得预期的行为?提前致谢。

+0

当应用程序崩溃时,你是否有任何错误?你的日志文件中是否包含相关的内容 – castis

+0

不,它只是像往常一样说“离开应用程序......”,即使我的代码中没有应该关闭它的行。 – Leva7

回答

1

变化switch_view

def switch_view(self, *args): 

的定义,并添加Button

bt1_intro = Button(on_press = Screens.switch_view) 

应用崩溃,因为你原来的bt1_introswitch_view分配被调用(而不是传递给函数) ,当时屏幕不存在。