用 WxPython 播放动画

Playing Animation with WxPython

我尝试在我的框架中播放 gif。我使用这段代码来做到这一点。为什么不起作用?
(我使用的是最新版本的 wxPython - 4.0.7.post2)

import wx
from wx.adv import AnimationCtrl

class Animate(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, -1, title)
        self.animation = AnimationCtrl(self)
        self.animation.LoadFile('scan.gif')
        self.animation.Play()
        self.Show()

app = wx.App()
frame = Animate(None, -1, 'Animation')
app.MainLoop()

构造函数的参数wx.adv.Animation是文件名。所以它必须是:

anim = wx.adv.Animation()
anim.LoadFile(r'C:\Users\yuval\PycharmProjects\MultiTyping\pictures\back_gif.gif')

anim = wx.adv.Animation(r'C:\Users\yuval\PycharmProjects\MultiTyping\pictures\back_gif.gif')

此外,我建议在框架中添加一个wx.BoxSizer

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(anim_ctrl)
frame.SetSizerAndFit(sizer)

看例子:

import wx
from wx.adv import AnimationCtrl, Animation

app=wx.App()
frame = wx.Frame(None, -1, title='2', pos=(0, 0), size=(200, 200))
app.SetTopWindow(frame)
anim = Animation(r'C:\Users\yuval\PycharmProjects\MultiTyping\pictures\back_gif.gif')
anim_ctrl = AnimationCtrl(frame, -1, anim)

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(anim_ctrl)
frame.SetSizerAndFit(sizer)

frame.Show()
anim_ctrl.Play()

app.MainLoop()

我认为@Rabbid76 给出的答案没有任何问题,我建议您 运行 来自命令行的代码,而不是来自某些 ide.
这是对你的问题的另一种看法,它尽可能简洁,并假设有一个名为 scan.giflocal 文件。

import wx
from wx.adv import AnimationCtrl

class Animate(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, -1, title)
        self.animation = AnimationCtrl(self)
        self.animation.LoadFile('scan.gif')
        self.animation.Play()
        self.Show()

app = wx.App()
frame = Animate(None, -1, 'Animation')
app.MainLoop()