定义事件类
class IndexClickEvent(wx.PyCommandEvent):
'''
业务导航按钮点击事件
'''
def __init__(self,eventType,id):
super(IndexClickEvent,self).__init__(eventType,id)
self.clickType='' #控件身调用方传递的参数
def setClickType(self,strtype):
self.clickType=strtype
def getClickType(self):
return self.clickType
myEVT_INDEX_SELECT=wx.NewEventType() #定义新事件类型
EVT_INDEX_SELECT=wx.PyEventBinder(myEVT_INDEX_SELECT,1) #绑定事件类型
控件中:
定义控件中的按钮 self.btnAdd=AQB.AquaButton(self.panel,wx.NewId(),wx.Bitmap(PSET.PICADD_M,wx.BITMAP_TYPE_PNG),PSET.STRADD)
self.btnSub=AQB.AquaButton(self.panel,wx.NewId(),wx.Bitmap(PSET.PICSUB_M,wx.BITMAP_TYPE_PNG),PSET.STRSUB)
self.btnCount=AQB.AquaButton(self.panel,wx.NewId(),wx.Bitmap(PSET.PICCOUNT_M,wx.BITMAP_TYPE_PNG),PSET.STRCOUNT)
self.Bind(wx.EVT_BUTTON,self.onAdd,self.btnAdd)
self.Bind(wx.EVT_BUTTON,self.onSub,self.btnSub)
self.Bind(wx.EVT_BUTTON,self.onCount,self.btnCount)
控件按钮事件:
def onAdd(self,event):
self.__selAct=PSET.STRADD
self.onclick()
def onSub(self,event):
self.__selAct=PSET.STRSUB
self.onclick()
def onCount(self,event):
self.__selAct=PSET.STRCOUNT
self.onclick()
抛出自定义事件
def onclick(self):
evt=proset.IndexClickEvent(proset.myEVT_INDEX_SELECT,self.GetId())
evt.setClickType(self.__selAct)
self.GetEventHandler().ProcessEvent(evt) #
ProcessEvent()的调用将这个新事件引入到事件处理系统中,GetEventHandler()调用返回wx.EvtHandler的一个实例,也就是窗口对象本身
调用方:
panTest=pMain.panIndex(self.nb)
self.Bind(proset.EVT_INDEX_SELECT,self.indexClick,panTest) #给panel绑定自定义事件
self.nb.AddPage(panTest, PSET.STRINDEX)
事件处理:
def indexClick(self,event):
wx.MessageBox(event.getClickType())