1

最近我一直在尝试让 gif 与 tkinter 一起工作,经过一些研究,我弄清楚了我将如何做到这一点并写了一个类来让它们更容易播放

class GifWrapper():
    def __init__(self, parent, file=None):
        self.file=file
        self.parent=parent
        if file:
            self.info=parse(file=file)
        else:
            raise GifError("expected file to be passed")
        print(str(self.info.frames)+" "+str(len(self.info.delays)))
        self.frames=[]
        for i in range(0, self.info.frames):
            self.frames.append(PhotoImage(file=self.file, format="gif -index {}".format(i)))
            print("added frame {}".format(i))
    async def play(self):
        curFrame=0
        for i in self.info.delays:
            await asyncio.sleep(i/100)
            self.parent["image"]=self.frames[curFrame]
            curFrame+=1

但是,当我对此进行测试时,我注意到我的 gif 非常奇怪,如此处所示第一帧似乎只受到轻微影响,第二帧似乎完全正常,其余的则受到该问题的严重影响,我记得在某处读过alpha 为 0 的像素在 PhotoImage 文件中被视为透明的,所以我认为这可能是问题所在,但是我认为第一张和第二张图像受到不同的影响很奇怪,有没有办法改变这种情况?

4

0 回答 0