【问题标题】:Playing Animation with WxPython使用 WxPython 播放动画
【发布时间】:2020-05-18 01:14:35
【问题描述】:

我尝试在我的框架中播放 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()

【问题讨论】:

    标签: python python-3.x animation wxpython gif


    【解决方案1】:

    构造函数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
    • 你用的是哪种类型的gif
    • @YuvalSharon this
    • 这一行 - anim_ctrl = AnimationCtrl(frame, -1, anim), 用退出代码把我扔了出去
    • @YuvalSharon 正如我所说,它对我来说很好用。你使用最新的 wxPython 版本吗?
    【解决方案2】:

    我认为@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()
    

    【讨论】:

    • 我试图从 Cmd 运行它,但它仍然不起作用
    • 在什么方面不起作用?准确并提供您遇到的任何错误。
    • 尝试另一个文件。即使使用普通图像(.png 或 .tiff 或 .jpg),我的盒子也会显示图像。我假设它认为这是一个带有单帧的gif
    • 文件有问题,谢谢
    • 你知道如何将 gif 作为框架的背景(我想在其上方添加按钮等)吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多