Python Kivy屏幕管理器“AttributeError”

2024-09-19 23:45:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在屏幕之间转换,但是我的屏幕管理器失败了,说它有一种非类型。 我怀疑我可能没有正确地参考我的屏幕管理器? 正确的方法是什么?在

我所采用的方法是直接从文档中获取的,所以我不确定我哪里出错了。在

错误:

      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()

Tags: 文件方法管理器屏幕mainpassrootcurrent
2条回答

你不用你的屏幕管理器。您创建了一个屏幕管理器sm并将其添加到其中,但之后您不使用它,而是创建一个新的主屏幕(它没有链接到您的管理器)。根小部件应该是屏幕管理器,这意味着你的build()函数应该返回屏幕管理器。在文档中,这是用return(sm)存档的。在

你还需要在创建屏幕时命名它们。您可以通过Screen(name="myscreen")来完成此操作,否则您的经理将不知道名称对应于哪个屏幕。在

你的应用程序可能没有显示屏幕,因为即使将它们添加到屏幕管理器中,PystokApp()类也不会返回屏幕管理器。在

请尝试return sm,而不是return root。在

相关问题 更多 >