wxpython逐个显示gif图像

时间:2014-08-28 09:47:58

标签: python python-2.7 wxpython

下面的代码应该在单击按钮时播放一些gif图像...并在单击另一个按钮时播放另一个gif图像。 但当我点击第一个按钮时,它正在正确播放相关图像.. 通过单击第二个按钮,第一个图像和第二个图像在无限循环上逐个播放 ...那么如何通过按钮点击播放一个gif?

import wx, wx.animate

class MyForm(wx.Frame):

    #----------------------------------------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY)

        panel = wx.Panel(self, wx.ID_ANY)
        btn1 = wx.Button(self, -1, "play GIF 1",(50,10))
        btn1.Bind(wx.EVT_BUTTON, self.onButton1)

        btn2 = wx.Button(self, -1, "play GIF 2",(50,40))
        btn2.Bind(wx.EVT_BUTTON, self.onButton2)

    #----------------------------------------------------------------------
    def onButton1(self, event):
        image='animated_1.gif'
        self.animateGIF(image)

    #----------------------------------------------------------------------
    def onButton2(self, event):
        image='animated_2.gif'
        self.animateGIF(image)

    #----------------------------------------------------------------------
    def animateGIF(self,image):
        gif = wx.animate.GIFAnimationCtrl(self, -1, image,pos=(50,70),size=(10,10))
        gif.GetPlayer()
        gif.Play()
#----------------------------------------------------------------------
app = wx.App()
frame = MyForm().Show()
app.MainLoop()

1 个答案:

答案 0 :(得分:1)

您需要在开始新图像之前停止并销毁之前的gif图像。像这样:

import wx, wx.animate

class MyForm(wx.Frame):

    #----------------------------------------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY)

        panel = wx.Panel(self, wx.ID_ANY)
        btn1 = wx.Button(self, -1, "play GIF 1",(50,10))
        btn1.Bind(wx.EVT_BUTTON, self.onButton1)

        btn2 = wx.Button(self, -1, "play GIF 2",(50,40))
        btn2.Bind(wx.EVT_BUTTON, self.onButton2)

        self.gif = None

    #----------------------------------------------------------------------
    def onButton1(self, event):
        image='animated_1.gif'
        self.animateGIF(image)

    #----------------------------------------------------------------------
    def onButton2(self, event):
        image='animated_2.gif'
        self.animateGIF(image)

    #----------------------------------------------------------------------
    def animateGIF(self,image):
        if self.gif:
            self.gif.Stop()
            self.gif.Destroy()

        self.gif = wx.animate.GIFAnimationCtrl(self, -1, image,pos=(50,70),size=(10,10))
        self.gif.GetPlayer()
        self.gif.Play()
#----------------------------------------------------------------------
app = wx.App()
frame = MyForm().Show()
app.MainLoop()

我已将self.gif = None添加到__init__功能,但很少更改功能animateGIF

相关问题