跟踪gif显示的结尾Python 3.x,Kivy

moiiocjp  于 2023-03-09  发布在  Python
关注(0)|答案(1)|浏览(81)

你好。我有一个显示gif的应用程序。在特定的时刻(绑定到鼠标和键盘的动作),基本的gif被改变成许多其他的。每个gif有不同的持续时间。

class Animation(Image):
    def setAnim(self, string, anim_loop = 1):
        self.source = string
        self.anim_delay = 0.1
        self.anim_loop = anim_loop

此类负责替换当前gif的特征。
我在谷歌上搜索了类似的问题。人们使用Animation类,其中有一个on_complete事件。不幸的是,根据文档,Image类中没有类似的事件。这是关于我希望看到的最终结果。(((由于上述原因,此代码不起作用)

class Animation(Image):
    def setAnim(self, string, anim_loop = 1):
        self.source = string
        self.anim_delay = 0.1
        self.anim_loop = anim_loop
        Image.bind(on_complete = self.on_complete)

    def on_complete(self, *args):
        self.source = default_gif
        self.anim_loop = 0
7d7tgy0s

7d7tgy0s1#

这里是一个黑客,已经为我工作(没有保证):

class MyImage(Image):
    def __init__(self, **kwargs):
        self.num_frames = None
        super(MyImage, self).__init__(**kwargs)

    def on_texture(self, instance, texture):
        super(MyImage, self).on_texture(instance, texture)
        print('on texture', self._coreimage.anim_index, self.num_frames)
        if not self.num_frames:
            self.num_frames = len(self._coreimage._image.textures)
        else:
            if self._coreimage.anim_index == self.num_frames - 1:
                print('anim done')

注意,定义一个与标准kivy类同名的自定义类可能会引起混淆,我建议避免创建一个名为Animation的自定义类。

相关问题