2012-03-05 209 views
3

我想使用wx-Python(2.7)来动画gif。下面列出的代码的作品,但我想创建一个函数,为我动画的GIF,所以我可以在其他地方使用它。我尝试过搜索互联网,但我只能找到在__init__函数内动画gif的代码。有任何想法吗?在wxPython中动画gif

# -*- coding: cp1252 -*- 
import wx 
import wx.animate 
class MyPanel(wx.Panel): 
    def __init__(self, parent, id): 
     wx.Panel.__init__(self, parent, id) 
     self.SetBackgroundColour("black") 
     gif_fname = "skYmk.gif" 
     gif = wx.animate.GIFAnimationCtrl(self, id, gif_fname, pos=(10, 10)) 
     gif.GetPlayer().UseBackgroundColour(True) 
     gif.Play() 
app = wx.PySimpleApp() 
frame = wx.Frame(None, -1, "wx.animate.GIFAnimationCtrl()", size = (200, 220)) 
MyPanel(frame, -1) 
frame.Show(True) 
app.MainLoop() 

回答

8

我不明白你的问题....做这样的事情有什么问题?

import wx 
import wx.animate 

class MyPanel(wx.Panel): 

    def __init__(self, parent, id): 

     wx.Panel.__init__(self, parent, id) 
     self.SetBackgroundColour("black") 
     gif_fname = "skYmk.gif" 
     gif = wx.animate.GIFAnimationCtrl(self, id, gif_fname, pos=(10, 10)) 
     gif.GetPlayer().UseBackgroundColour(True) 

     self.gif = gif 

    def CallMeLater(self, play=True): 

     if play: 
      self.gif.Play() 
     else: 
      self.gif.Stop() 

app = wx.PySimpleApp() 
frame = wx.Frame(None, -1, "wx.animate.GIFAnimationCtrl()", size = (200, 220)) 
MyPanel(frame, -1) 
frame.Show(True) 
app.MainLoop() 
+0

我不确定CallMeLater函数需要的参数,也没有意识到我必须做self.gif.Play()。谢谢,这可能会解决我的问题。 – 2012-03-06 11:39:22