最近我一直在尝试让 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 文件中被视为透明的,所以我认为这可能是问题所在,但是我认为第一张和第二张图像受到不同的影响很奇怪,有没有办法改变这种情况?