Python 动画定时器

Python 动画定时器,python,wxpython,Python,Wxpython,简单的动画,这是可行的,但是替换的图像数据会留在缓冲区中吗? 使用定时器制作动画对CPU有害吗?我的意思是像self.timer.Start(25)那样从单个图像文件中制作一些很酷的动画 self.nm = ['01.png', '02.png', '03.png', '04.png'] self.stop = 0 def time(self, event): self.count += 1 if self.count == 1: self.anime = wx

简单的动画,这是可行的,但是替换的图像数据会留在缓冲区中吗? 使用定时器制作动画对CPU有害吗?我的意思是像self.timer.Start(25)那样从单个图像文件中制作一些很酷的动画

self.nm = ['01.png', '02.png', '03.png', '04.png']
self.stop = 0

def time(self, event):
    self.count += 1
    if self.count == 1:
        self.anime = wx.StaticBitmap(self, -1, wx.Bitmap(self.nm[self.stop], wx.BITMAP_TYPE_ANY))
    if self.count == 2:
        self.anime.Show(0)
        if self.stop == 3:
            self.timer.Stop()
        else:
            self.stop+=1
            self.count = 0
    event.Skip()

首先,每次需要显示图像时,都要重新加载图像。是的,这是非常糟糕的,因为这需要大量的磁盘I/O,而且磁盘可能是程序必须与之交互的最慢的设备。尽可能避免不惜一切代价使用磁盘

现在,为了缓解这种情况,有几种选择:

  • 创建自己的子类以匹配动画(需要重写
    wx.animate.animation
    中的一些方法,但也重写了其中的一些方法)。这是解决此问题的正确方法,但不是最简单的方法
  • 如果可以将动画转换为.gif而不丢失可接受的细节,请使用。这比以前的解决方案稍微容易一些,因为您不必编写任何动画代码
  • 将位图保存在内存中;只需将它们存储在某个位置的列表中(“某处”并不意味着在
    time
    函数本身内部,因为每次调用函数
    time
    时仍会重新加载;“某处”表示
    time
    函数作为对象的一部分)
  • 在UI中保留所有位图,并在需要更改帧时在它们之间切换可见性

…等等…你并不是每次需要显示的图像都要加载…对吗?我想是的…这不好吗?o.w为什么不在self.nm中保存wx.StaticBitmaps,而不是每次只保存文件名并加载?谢谢..如果加载了图像,那么它们的位置会及时更改呢?可能是计时器。开始(100)是的,如果要使用最后两种方法之一,请使用
wx.Timer