【发布时间】:2019-07-27 13:51:32
【问题描述】:
我正在尝试使用 Tkinter 显示 gif,但是当 gif 加载时它看起来很奇怪。我已经粘贴了原始 gif 和 Tkinter 中显示的 gif 的屏幕截图。这不会只发生在一个 gif 上,而是我使用的每一个 gif。
Gif 中的原始帧:
在 tkinter 中看到的帧:
代码如下:
from Tkinter import *
import time as t
root = Tk()
frames = []
i = 0
while True:
try:
frames.append(PhotoImage(file='display.gif',format='gif -index %i' %(i)))
i += 1
except TclError:
break
def update(ind):
if ind >= len(frames):
ind = 0
frame = frames[ind]
ind += 1
label.configure(image=frame)
root.after(100, update, ind)
label = Label(root)
label.pack()
root.after(0,update,0)
root.mainloop()
【问题讨论】:
-
顺便说一下,整个 gif 看起来像这样,除了一些 gif 有 1 帧左右的正确外观 gif。
-
Tk 对动画 GIF 的支持似乎从根本上被破坏了——它只有在每一帧都是完整图像的大小时才能正常工作,这是可以想象到的最低效的动画表示方式。 (一个适当的动画 GIF 只包括在每一帧中发生变化的区域。)有一些代码声称可以解决这个问题stackoverflow.com/questions/50904093/…