天天看點

wxpython 自定義事件

定義事件類

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):

繼續閱讀