如何多次旋转小部件?

How to rotate a widget many times?

来自 here 的官方示例显示了如何 旋转一次小部件 :

from kivy.app import App
from kivy.lang import Builder

kv = '''
FloatLayout:

    Button:
        text: 'hello world'
        size_hint: None, None
        pos_hint: {'center_x': .5, 'center_y': .5}
        canvas.before:
            PushMatrix
            Rotate:
                angle: 45
                origin: self.center
        canvas.after:
            PopMatrix
'''


class RotationApp(App):
    def build(self):
        return Builder.load_string(kv)


RotationApp().run()

但是如果我想创建一个旋转循环,即如何多次改变角度(并显示结果)?

将角度旋转量作为 NumericProperty 附加到可访问的地方(我将其附加到应用程序),然后以时钟间隔更新它

from kivy.app import App
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.properties import NumericProperty

kv = '''
FloatLayout:

    Button:
        text: 'hello world'
        size_hint: None, None
        pos_hint: {'center_x': .5, 'center_y': .5}
        canvas.before:
            PushMatrix
            Rotate:
                angle: app.angle
                origin: self.center
        canvas.after:
            PopMatrix
'''


class RotationApp(App):
    angle = NumericProperty(25)
    def build(self):
        def updates_spin(*args):
            self.angle += 2

        Clock.schedule_interval(updates_spin, 0.05)
        return Builder.load_string(kv)


RotationApp().run()