我正在尝试使用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何时正确显示在屏幕上并在此之后运行方法就足够了。
任何解决方案/提示/技巧/建议都非常感谢!谢谢!