定義事件類
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):