2016-03-02 77 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分配被調用(而不是傳遞給函數) ,當時屏幕不存在。