我正在尝试按顺序为10个小部件设置动画,每个动画应该按照之前的动画开始。不幸的是,我的解决方案在下面按顺序触发所有动画而不等待任何事情完成。
def Animate_Widget(self,index):
if index < 10:
anim = Animation(x = self.position[index][0], y = self.position[index][1], d=1)
anim.bind(on_complete=self.Animate_Widget(index + 1))
anim.start(self.ids['widget' + str(index)])
def Resize_Layout(self):
self.Animate_Widget(0)
答案 0 :(得分:4)
下面:
anim.bind(on_complete=self.Animate_Widget(index + 1))
您可以立即拨打电话。这是因为调用时会评估anim.bind
的参数。相反,定义另一个函数或lambda来延迟可以在没有任何参数的情况下调用的调用:
def callback():
self.Animate_Widget(index + 1)
anim.bind(on_complete=callback)
或者:
anim.bind(on_complete=lambda: self.Animate_Widget(index + 1))