Python 如何在Kivy中一次启动多个动画? 目标: 一次启动多个动画 预期结果: 同时定义和启动的所有动画必须并行运行

Python 如何在Kivy中一次启动多个动画? 目标: 一次启动多个动画 预期结果: 同时定义和启动的所有动画必须并行运行,python,kivy,Python,Kivy,实际结果: 第一次启动的唯一动画显示,下面的动画甚至没有启动 参考代码: 谢谢。我相信你在kivy动画中遇到了一个bug。如果您只是在使用一个简单的动画,那么在多个小部件上启动动画应该可以正常工作。当您使用序列(动画与“+”连接)时,会发生此错误序列通过运行第一个动画并在序列中启动下一个动画的完成方法上绑定内部。当您调用start时,该on_complete方法被绑定。但是一旦序列中第一个小部件上的第一个动画完成,第二个动画就会启动,并且on_complete方法就会解除绑定。现在,当第


实际结果:
  • 第一次启动的唯一动画显示,下面的动画甚至没有启动

参考代码:


谢谢。我相信你在kivy
动画中遇到了一个bug。如果您只是在使用一个简单的
动画
,那么在多个
小部件上启动
动画
应该可以正常工作。当您使用
序列
动画
与“+”连接)时,会发生此错误<代码>序列
通过运行第一个
动画
并在
序列
中启动下一个
动画
的完成
方法上绑定内部
。当您调用
start
时,该
on_complete
方法被绑定。但是一旦
序列中第一个
小部件上的第一个
动画
完成,第二个
动画
就会启动,并且
on_complete
方法就会解除绑定。现在,当第二个
小部件上的第一个
动画
完成时,不会调用
on_complete
(在第一个
小部件
完成后解除绑定),第二个
动画
也不会启动

以下是
序列中的代码

def on_anim1_complete(self, instance, widget):
    self.anim1.unbind(on_complete=self.on_anim1_complete)
    self.anim2.start(widget)
在您的例子中,
动画
似乎不是在第二个
小部件
上启动的,但是因为第一个
动画
实际上没有任何动画,所以您看不到它

不幸的是,没有太多的替代方案来避免这个问题

  • 您可以第二次创建整个
    动画的副本(
    copy()
    deepcopy()
    将不起作用),只需使用两个不同的动画(每个
    小部件一个)
  • 您只需使用简单的
    动画
    即可完成自己的排序,并在完成时使用自己的
    启动下一个
    动画
    。方便的是,on_complete
    参数中包含了下一次
    start()
    调用所需的动画小部件
  • 在某些情况下,可以为单个容器设置动画(如
    布局
    )。由于这只是为单个
    小部件设置动画,因此排序应该正确
def on_anim1_complete(self, instance, widget):
    self.anim1.unbind(on_complete=self.on_anim1_complete)
    self.anim2.start(widget)