我想制作一个带有gif动画的kivy程序,它运行一次然后停止。 我将anim_loop设置为1,但它一直在反复运行。 这是代码:
Root = Builder.load_string('''
Image:
source: 'streifen1.gif'
size_hint_y: 1
anim_loop: 1
''')
class TTT(App):
def build(self):
Window.clearcolor = (0, 0.5, 1, 1)# sets the backgroundcolor
return Root #returnst the kv string and therefore the root widget`
答案 0 :(得分:2)
anim_loop
属性应该在Kivy 1.9.0中运行,如果您使用的是旧版本,则考虑升级。
还有另一种方式。您可以使用以下代码停止动画:
myimage._coreimage.anim_reset(False)
要在动画播放后停止动画,请观察texture
曲线。加载每个帧后它将被更改。如果你的GIF有n帧,那么在第{n + 1}次调用on_texture
方法后停止动画。
from kivy.app import App
from kivy.uix.image import Image
class MyImage(Image):
frame_counter = 0
frame_number = 2 # my example GIF had 2 frames
def on_texture(self, instance, value):
if self.frame_counter == self.frame_number + 1:
self._coreimage.anim_reset(False)
self.frame_counter += 1
class MyApp(App):
def build(self):
return MyImage(source = "test.gif")
if __name__ == '__main__':
MyApp().run()