【问题标题】:Use Gif Logo For Loading Screen In Kivy在 Kivy 中使用 Gif 徽标加载屏幕
【发布时间】:2021-04-19 08:25:39
【问题描述】:

我们可以使用 gif 标志 加载屏幕 30 秒然后切换到其他屏幕吗?如果是,如何?

喜欢这个 gif:

【问题讨论】:

    标签: python python-3.x kivy kivy-language kivymd


    【解决方案1】:

    您可以通过以下代码获得所需的输出

    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

    https://kivy.org/doc/stable/api-kivy.uix.screenmanager.html

    https://kivy.org/doc/stable/api-kivy.uix.image.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2016-02-21
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多