2015-09-15 123 views
1

我的GIF是凍結' - '(不顯示/動畫,但工作tkinter)。我嘗試了所有其他方式,但仍然無法正常工作,代碼:Tkinter GIF不顯示

import tkinter as tk 
    from tkinter import * 

    def animate(self): 

     global pic 

     pic = PhotoImage(file="/home/arnaldo/Desktop/b.gif") 

     print("called1") 

     self.canvas = Canvas(width=350, height=233, bg='white') 
     self.canvas.pack(expand=YES, fill=BOTH)    
     self.canvas.create_image((0, 0), image=pic, anchor=NW) 

    class run(tk.Tk): 

     def __init__(self, *args, **kwargs): 

      tk.Tk.__init__(self, *args, **kwargs) 

      animate(self) 

    run().mainloop() 
+1

您的問題是您沒有看到任何圖像,或者您看到一張圖像沒有生成動畫? –

回答

0

我解決我的問題,這裏的代碼,你必須拆分GIF(http://gifmaker.me/exploder/),並添加圖片到一個文件夾(gifBackgroundDirectory)並運行...:

import tkinter as tk 
from tkinter import Canvas, PhotoImage 
import os 

#YOUR IMAGE FOLDER, THAT CONTAINS tmp-0.gif, tmp-1.gif 
gifBackgroundDirectory = "/gif/" 

def animate(self): 

    #CHECK IF LIST IS EMPTY 
    if len(self.gifBackgroundImages) == 0: 
     #CREATE FILES IN LIST 
     for foldername in os.listdir(gifBackgroundDirectory): 
      self.gifBackgroundImages.append(foldername) 
     #ALPHABETICAL ORDER 
     self.gifBackgroundImages.sort(key = lambda x: int(x.split('.')[0].split('-')[1])) 

    if self.atualGifBackgroundImage == len(self.gifBackgroundImages): 
     self.atualGifBackgroundImage = 0 

    self.background["file"] = gifBackgroundDirectory + self.gifBackgroundImages[self.atualGifBackgroundImage] 
    self.label1["image"] = self.background 
    self.atualGifBackgroundImage += 1 

    #MILISECONDS\/ PER FRAME 
    self.after(100, lambda: animate(self)) 

class run(tk.Tk): 

    def __init__(self, *args, **kwargs): 

     tk.Tk.__init__(self, *args, **kwargs) 

     self.label1 = tk.Label(self) 
     self.label1.pack() 

     #SET ANIMATEDBACKGROUND 
     self.gifBackgroundImages = list() 
     self.atualGifBackgroundImage = 0 
     self.background = tk.PhotoImage() 
     animate(self) 

run().mainloop()