我正在尝试将我的代码从.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
方法但它也崩溃了应用程序。我该怎么做才能避免崩溃并获得预期的行为?提前谢谢。
答案 0 :(得分:1)
将switch_view
的定义更改为
def switch_view(self, *args):
并添加Button
bt1_intro = Button(on_press = Screens.switch_view)
应用程序崩溃是因为原始分配的bt1_intro
switch_view
被调用(而不是传递给函数),并且当时屏幕不存在。