在 Kivy 中使用 Gif 徽标加载屏幕
Use Gif Logo For Loading Screen In Kivy
我们可以使用 gif 徽标 加载屏幕 30 秒然后切换到其他屏幕吗?如果是,怎么办?
喜欢这个 gif:
您可以通过以下代码实现所需的输出
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.clock import Clock
from kivy.uix.screenmanager import ScreenManager, Screen, WipeTransition, FadeTransition, NoTransition
from kivy.uix.floatlayout import FloatLayout
Builder.load_string("""
<FirstScreen>:
orientation: "vertical"
Image:
id: gif
source: 'load.gif'
pos: self.pos
size_hint: None, None
size: root.size
allow_stretch: True
keep_ratio: False
anim_delay: -1
anim_loop: 1
<SecondScreen>:
orientation: "vertical"
Label:
text:"Second Screen"
""")
class FirstScreen(Screen, FloatLayout):
secs = 0
def __init__(self, **kwargs):
super(FirstScreen, self).__init__(**kwargs)
self.orientation = "vertical"
Clock.schedule_interval(self.update_time, 1)
def update_time(self, sec):
self.secs = self.secs+1
''' 30 seconds'''
if self.secs == 30:
self.manager.current = 'second'
def on_enter(self):
self.ids.gif.anim_delay = 0.10
class SecondScreen(Screen, FloatLayout):
def __init__(self, **kwargs):
super(SecondScreen, self).__init__(**kwargs)
self.orientation = "vertical"
class ExampleApp(App):
def build(self):
sm = ScreenManager(transition=NoTransition())
sm.add_widget(FirstScreen(name='first'))
sm.add_widget(SecondScreen(name='second'))
return sm
if __name__ == "__main__":
ExampleApp().run()
使用anim_delay
延迟动画
参考检查如下:
https://kivy.org/doc/stable/api-kivy.clock.html
我们可以使用 gif 徽标 加载屏幕 30 秒然后切换到其他屏幕吗?如果是,怎么办?
喜欢这个 gif:
您可以通过以下代码实现所需的输出
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.clock import Clock
from kivy.uix.screenmanager import ScreenManager, Screen, WipeTransition, FadeTransition, NoTransition
from kivy.uix.floatlayout import FloatLayout
Builder.load_string("""
<FirstScreen>:
orientation: "vertical"
Image:
id: gif
source: 'load.gif'
pos: self.pos
size_hint: None, None
size: root.size
allow_stretch: True
keep_ratio: False
anim_delay: -1
anim_loop: 1
<SecondScreen>:
orientation: "vertical"
Label:
text:"Second Screen"
""")
class FirstScreen(Screen, FloatLayout):
secs = 0
def __init__(self, **kwargs):
super(FirstScreen, self).__init__(**kwargs)
self.orientation = "vertical"
Clock.schedule_interval(self.update_time, 1)
def update_time(self, sec):
self.secs = self.secs+1
''' 30 seconds'''
if self.secs == 30:
self.manager.current = 'second'
def on_enter(self):
self.ids.gif.anim_delay = 0.10
class SecondScreen(Screen, FloatLayout):
def __init__(self, **kwargs):
super(SecondScreen, self).__init__(**kwargs)
self.orientation = "vertical"
class ExampleApp(App):
def build(self):
sm = ScreenManager(transition=NoTransition())
sm.add_widget(FirstScreen(name='first'))
sm.add_widget(SecondScreen(name='second'))
return sm
if __name__ == "__main__":
ExampleApp().run()
使用anim_delay
延迟动画
参考检查如下:
https://kivy.org/doc/stable/api-kivy.clock.html