2012-03-05 2 views
3

Я пытаюсь анимировать gif с помощью wx-Python (2.7). Код, указанный ниже, работает, но я хочу создать функцию, которая анимирует gif для меня, поэтому я могу использовать ее в другом месте. Я пробовал искать в Интернете, но я могу найти код, который оживляет gif в функции __init__. Есть идеи?Анимация gif в wxPython

# -*- 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(). Спасибо, это, вероятно, решит мою проблему. –