天天看点

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

继续阅读