我使用tkinter使用以下页面的指导来动画gif: Tkinter animation will not work
但是我无法得到建议。现在我有类似的东西
import tkinter as tk
root = tk.Tk()
frames = [tk.PhotoImage(file = '/home/quantik/Pictures/dice.gif',format="gif -index %i" %(i)) for i in range(5)]
def animate(n):
if (n < len(frames)):
label.configure(image=frames[n])
n+=1
root.after(300, animate(n))
label = tk.Label(root)
label.pack()
root.after(0, animate(0))
root.mainloop()
然而,它只显示frames
中的最后一张图片我尝试了几种方法,但我仍然得到相同的结果。有没有人对为什么会这样做有任何建议?
答案 0 :(得分:2)
此代码:
root.after(300, animate(n))
与此代码完全相同:
result = animate(n)
root.after(300, result)
注意发生了什么?您不想调用该函数,您想告诉after
稍后再调用它。你这样做:
root.after(300, animate, n)
告诉root.after
在animate
毫秒后调用300
函数,并将n
的值作为参数传递给函数。