<bdo id='yNPMv'></bdo><ul id='yNPMv'></ul>
    <i id='yNPMv'><tr id='yNPMv'><dt id='yNPMv'><q id='yNPMv'><span id='yNPMv'><b id='yNPMv'><form id='yNPMv'><ins id='yNPMv'></ins><ul id='yNPMv'></ul><sub id='yNPMv'></sub></form><legend id='yNPMv'></legend><bdo id='yNPMv'><pre id='yNPMv'><center id='yNPMv'></center></pre></bdo></b><th id='yNPMv'></th></span></q></dt></tr></i><div id='yNPMv'><tfoot id='yNPMv'></tfoot><dl id='yNPMv'><fieldset id='yNPMv'></fieldset></dl></div>

    <small id='yNPMv'></small><noframes id='yNPMv'>

      <legend id='yNPMv'><style id='yNPMv'><dir id='yNPMv'><q id='yNPMv'></q></dir></style></legend><tfoot id='yNPMv'></tfoot>

        如何在 Kivy 中制作重复的旋转动画?

        时间:2023-06-07

        <tfoot id='mFCMe'></tfoot>

        <small id='mFCMe'></small><noframes id='mFCMe'>

            <tbody id='mFCMe'></tbody>
              • <bdo id='mFCMe'></bdo><ul id='mFCMe'></ul>
                <legend id='mFCMe'><style id='mFCMe'><dir id='mFCMe'><q id='mFCMe'></q></dir></style></legend>
                <i id='mFCMe'><tr id='mFCMe'><dt id='mFCMe'><q id='mFCMe'><span id='mFCMe'><b id='mFCMe'><form id='mFCMe'><ins id='mFCMe'></ins><ul id='mFCMe'></ul><sub id='mFCMe'></sub></form><legend id='mFCMe'></legend><bdo id='mFCMe'><pre id='mFCMe'><center id='mFCMe'></center></pre></bdo></b><th id='mFCMe'></th></span></q></dt></tr></i><div id='mFCMe'><tfoot id='mFCMe'></tfoot><dl id='mFCMe'><fieldset id='mFCMe'></fieldset></dl></div>

                1. 本文介绍了如何在 Kivy 中制作重复的旋转动画?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我想制作一个可以旋转加载微调器图像的动画小部件.我查看了 Animation 类,它似乎可以完成这项工作.但是我找不到一种方法来不断地在一个方向上旋转小部件

                  I want to make an animated widget that would rotate the loading spinner image. I've looked into the Animation class and it seems like it can do the job. But I couldn't find a way to keep rotating the widget in a single direction constantly

                  这是我的代码:

                  from kivy.app import App
                  from kivy.lang import Builder
                  from kivy.uix.image import Image
                  from kivy.graphics import Rotate
                  from kivy.animation import Animation
                  from kivy.properties import NumericProperty
                  
                  Builder.load_string('''                                                                                                                                        
                  <Loading>:                                                                                                                                                 
                      canvas.before:                                                                                                                                             
                          PushMatrix                                                                                                                                             
                          Rotate:                                                                                                                                                
                              angle: self.angle                                                                                                                                  
                              axis: (0, 0, 1)                                                                                                                                    
                              origin: self.center                                                                                                                                
                      canvas.after:                                                                                                                                              
                          PopMatrix                                                                                                                                              
                  ''')
                  
                  class Loading(Image):
                      angle = NumericProperty(0)
                      def __init__(self, **kwargs):
                          super().__init__(**kwargs)
                          anim = Animation(angle = 360)
                          anim += Animation(angle = -360)
                          anim.repeat = True
                          anim.start(self)
                  
                  
                  class TestApp(App):
                      def build(self):
                          return Loading()
                  
                  TestApp().run()
                  

                  当您启动它时,您会看到该小部件在一个方向上旋转 360 度,然后旋转旋转.如何构建动画序列,使角度不断增加或每 360 次旋转下降到 0?

                  When you launch it, you'll see that the widget rotates 360 degrees in one direction and then turns the rotation around. How could I build the animation sequence so that the angle would constantly keep increasing or would be dropped to 0 every 360-rotation?

                  推荐答案

                  您可以在 on_angle 方法中将角度设置为 0.这是一个稍作修改的版本:

                  You can set your angle to 0 inside on_angle method. Here's a slightly modified version:

                  from kivy.app import App
                  from kivy.lang import Builder
                  from kivy.uix.floatlayout import FloatLayout
                  from kivy.animation import Animation
                  from kivy.properties import NumericProperty
                  
                  Builder.load_string('''                               
                  <Loading>:
                      canvas.before:
                          PushMatrix
                          Rotate:
                              angle: root.angle
                              axis: 0, 0, 1
                              origin: root.center
                      canvas.after:
                          PopMatrix
                  
                  
                      Image:
                          size_hint: None, None
                          size: 100, 100
                          pos_hint: {'center_x': 0.5, 'center_y': 0.5}
                  ''')
                  
                  class Loading(FloatLayout):
                      angle = NumericProperty(0)
                      def __init__(self, **kwargs):
                          super(Loading, self).__init__(**kwargs)
                          anim = Animation(angle = 360, duration=2) 
                          anim += Animation(angle = 360, duration=2)
                          anim.repeat = True
                          anim.start(self)
                  
                      def on_angle(self, item, angle):
                          if angle == 360:
                              item.angle = 0
                  
                  
                  class TestApp(App):
                      def build(self):
                          return Loading()
                  
                  TestApp().run()
                  

                  这篇关于如何在 Kivy 中制作重复的旋转动画?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:我如何使用 Kivy (Python) 相机 下一篇:在使用 PyInstaller --onefile 打包 kivy 时包含 .kv/.json 文件?

                  相关文章

                  <i id='hSCa2'><tr id='hSCa2'><dt id='hSCa2'><q id='hSCa2'><span id='hSCa2'><b id='hSCa2'><form id='hSCa2'><ins id='hSCa2'></ins><ul id='hSCa2'></ul><sub id='hSCa2'></sub></form><legend id='hSCa2'></legend><bdo id='hSCa2'><pre id='hSCa2'><center id='hSCa2'></center></pre></bdo></b><th id='hSCa2'></th></span></q></dt></tr></i><div id='hSCa2'><tfoot id='hSCa2'></tfoot><dl id='hSCa2'><fieldset id='hSCa2'></fieldset></dl></div>

                    <small id='hSCa2'></small><noframes id='hSCa2'>

                      • <bdo id='hSCa2'></bdo><ul id='hSCa2'></ul>
                      <tfoot id='hSCa2'></tfoot>
                      <legend id='hSCa2'><style id='hSCa2'><dir id='hSCa2'><q id='hSCa2'></q></dir></style></legend>