我试图在屏幕之间转换,但是我的屏幕管理器失败了,说它有一种非类型。 我怀疑我可能没有正确地参考我的屏幕管理器? 正确的方法是什么?在
我所采用的方法是直接从文档中获取的,所以我不确定我哪里出错了。在
错误:
on_release: root.manager.current = 'AboutUsWindow'
AttributeError: 'NoneType' object has no attribute 'current'
我的.kv文件:
^{pr2}$我的主.py文件:
# Here are imports which i did not include
class MainWindow(Screen, BoxLayout, CoverImage):
pass
class AboutUsWindow(Screen, BoxLayout, CoverImage):
pass
sm = ScreenManager()
sm.transition = FadeTransition()
sm.add_widget(MainWindow())
sm.add_widget(AboutUsWindow())
class PystokApp(App):
def build(self):
root = MainWindow(source='images/logo.jpg')
return root
# main = MainWindow()
# Window.size = main.size
# return MainWindow()
if __name__ == "__main__":
PystokApp().run()
你不用你的屏幕管理器。您创建了一个屏幕管理器
sm
并将其添加到其中,但之后您不使用它,而是创建一个新的主屏幕(它没有链接到您的管理器)。根小部件应该是屏幕管理器,这意味着你的build()
函数应该返回屏幕管理器。在文档中,这是用return(sm)
存档的。在你还需要在创建屏幕时命名它们。您可以通过
Screen(name="myscreen")
来完成此操作,否则您的经理将不知道名称对应于哪个屏幕。在你的应用程序可能没有显示屏幕,因为即使将它们添加到屏幕管理器中,PystokApp()类也不会返回屏幕管理器。在
请尝试return sm,而不是return root。在
相关问题 更多 >
编程相关推荐