MainFrame
# -*- coding: utf-8 -*- ########################################################################### ## Python code generated with wxFormBuilder (version Jun 17 2015) ## http://www.wxformbuilder.org/ ## ## PLEASE DO "NOT" EDIT THIS FILE! ########################################################################### import wx import wx.xrc from Eve import Eve ########################################################################### ## Class MainFrame ########################################################################### class MainFrame(wx.Frame): def __init__(self, parent): wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition, size=wx.Size(1392, 886), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) bSizer1 = wx.BoxSizer(wx.VERTICAL) self.panel = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL) self.boxSizer = wx.BoxSizer(wx.HORIZONTAL) self.panel.SetSizer(self.boxSizer) self.panel.Layout() self.boxSizer.Fit(self.panel) bSizer1.Add(self.panel, 1, wx.EXPAND | wx.ALL, 5) self.btn = wx.Button(self, wx.ID_ANY, u"新增", wx.DefaultPosition, wx.DefaultSize, 0) bSizer1.Add(self.btn, 0, wx.ALIGN_CENTER | wx.ALL, 5) self.SetSizer(bSizer1) self.Layout() self.Centre(wx.BOTH) self.Init() def __del__(self): pass def Init(self): self.Bind(wx.EVT_BUTTON, self.Btn_Click) self.Bind(wx.EVT_CLOSE, self.OnClose) self.ls=[] def Btn_Click(self, event): eve=Eve(self) self.ls.append(eve) self.boxSizer.Add(eve, 0 , wx.ALL, 0) self.Layout() def OnClose(self, event): for eve in self.ls: eve.Stop() self.Destroy(); app=wx.App() frame=MainFrame(None) frame.Show() app.MainLoop()
todo
import wx import threading import time import random class Eve(wx.StaticBitmap): def __init__(self,parent): wx.StaticBitmap.__init__(self, parent, wx.ID_ANY, wx.Bitmap( u"png/frame_01.png", wx.BITMAP_TYPE_ANY ), wx.DefaultPosition, wx.Size( 230,200 ), 0) self.runFlag=True self.Layout() self.t1=threading.Thread(target=self.Task) self.t1.start() def Task(self): index=0 delay=random.randint(1,100)/1000 while self.runFlag: index=(index+1)%36 wx.CallAfter(self.DrawUi,index+1) time.sleep(delay) def DrawUi(self, index): w,h=self.Size img = wx.Image('png/frame_%02d.png' % index, wx.BITMAP_TYPE_ANY) img = img.Scale(w, h) self.SetBitmap(wx.Bitmap(img)) self.Layout() def Stop(self): self.runFlag=False