如何在带有(或不带有)ScreenManager(自动切换到下一个屏幕)的Kivy中构建启动屏幕?

时间:2019-03-12 10:41:28

标签: python kivy splash-screen

我正在尝试使用python和kivy创建一个“ SplashScreen”。这个想法是启动程序,尽可能快地显示SplashScreen,在后台运行某些方法,然后自动切换到“ MainScreen”。那是用户可能输入和输入输入的第一时间。

问题是,我尝试过的所有方法都得到以下结果:程序开始运行,显示空白的空白窗口,运行我的方法,显示SplashScreen,立即切换到MainScreen。

在运行我想要的方法之前,我只是不知道如何强制显示显示SplashScreen。需要澄清的是:“ SplashScreen”并不意味着像透明或东西之类的东西。只是另一个标准屏幕。

这是我的代码:

mainWindow.py

Builder.load_file("loadingscreen.kv")
Builder.load_file("mainscreen.kv")

class LoadingScreen(Screen):
    pass


class MainScreen(Screen):
    pass


class FaitApp(App):

    LoadingStartUp = None

    def build(self):
        self.root = ScreenManager()
        self.root.add_widget(LoadingScreen(name='LoadingScreen'))
        self.root.add_widget(MainScreen(name='MainScreen'))
        return self.root

    def on_start(self):
        self.LoadingStartUp = LoadingStartUp(self)
        Clock.schedule_once(self.LoadingStartUp.loadButtonImages,0)
        return

if __name__ == '__main__':
    app = FaitApp()
    app.run()
    sys.exit()

loadingscreen.kv

#kivy 1.10.1
    <LoadingScreen>:
        canvas:
            Color:
                rgba: 1, 1 , 0, 1
            Rectangle:
                size: self.size
        Label:
            font_size: 42
            text: root.name

mainscreen.kv

#kivy 1.10.1
    <MainScreen>:
        canvas:
            Color:
                rgba: 1, 1 , 0, 1
            Rectangle:
                size: self.size
        Label:
            font_size: 42
            text: root.name

loadingStartUp.py

class LoadingStartUp(object):

    app = None

    def __init__(self, app):
        self.app = app
        return

    def loadButtonImages(self):
        log.debug('LoadingStartUp')
        log.debug('Waiting for everything ready!')
        sleep(5)
        self.app.root.current = 'MainScreen'
        return

我还尝试在Clock.schedule_once()build()中使用on_start()。我什至尝试使用self.root = Builder.load_file()在没有ScreenManager的情况下加载网站。每次与上述结果相同。

我认为检测SplashScreen何时正确显示在屏幕上并在此之后运行方法就足够了。

任何解决方案/提示/技巧/建议都非常感谢!谢谢!

0 个答案:

没有答案