透明背景不适用于 GIF(Tkinter)

问题描述 投票:0回答:0

我似乎在让 gif 的背景变得透明时遇到了一些问题。我附上了下面的代码:

class MyLabel(Label):
    def __init__(self, master, filename, delayms):
        im = Image.open(filename)
        seq =  []
        self.delay = 10
        try:
            while 1:
                seq.append(im.copy())
                im.seek(len(seq)) # skip to next frame
        except EOFError:
            pass # we're done

        try:
            self.delay =  delayms#im.info['duration']
        except KeyError:
            self.delay = 10

        first = seq[0].convert('RGBA')
        self.frames = [ImageTk.PhotoImage(first)]
        canvas = Canvas(master, bg="red", width=500, height=400)
        canvas.place(relx=0.5, rely=0.5, anchor='center')
        Label.__init__(self, canvas, image=self.frames[0])

        temp = seq[0]
        for image in seq[1:]:
            temp.paste(image)
            frame = image.convert('RGBA')
            self.frames.append(ImageTk.PhotoImage(frame))

        self.idx = 0

        self.cancel = self.after(self.delay, self.play)

    def play(self):
        self.config(image=self.frames[self.idx])
        self.idx += 1
        if self.idx == len(self.frames):
            self.idx = 0
        self.cancel = self.after(self.delay, self.play)

我做了一些研究并尝试了不同的解决方案,但似乎没有什么对我有用。

python python-3.x tkinter animated-gif
© www.soinside.com 2019 - 2024. All rights reserved.