用 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.gif
的 local
文件。
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()
我尝试在我的框架中播放 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.gif
的 local
文件。
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()