【问题标题】:Tkinter failing to animate gifTkinter 未能为 gif 设置动画
【发布时间】:2017-05-09 05:22:02
【问题描述】:

我正在使用 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 中的最后一张图像我尝试了几种方法,但我一直得到相同的结果。有人对为什么会发生这种情况有任何建议吗?

【问题讨论】:

    标签: python python-3.x user-interface tkinter graphics


    【解决方案1】:

    这段代码:

    root.after(300, animate(n))
    

    和这段代码完全一样:

    result = animate(n)
    root.after(300, result)
    

    注意发生了什么?您不想调用该函数,而是想告诉after 稍后再调用它。你这样做:

    root.after(300, animate, n)
    

    这告诉root.after300 毫秒后调用animate 函数,并将n 的值作为参数传递给函数。

    【讨论】:

    • 这行得通!我想我没有完全理解after 文档,我认为它会等待300 毫秒然后调用animate(args)。谢谢!
    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2016-10-14
    相关资源
    最近更新 更多