功能说明:
定义一个自定义事件,两个按钮都点击才触发的事件
事件触发后,将点击计数显示在标题上.
import wx class TwoButtonEvent(wx.PyCommandEvent): def __init__(self, evtType, id): wx.PyCommandEvent.__init__(self, evtType, id) self.clickCount = 0 def GetClickCount(self): return self.clickCount def SetClickCount(self, count): self.clickCount = count myEVT_TWO_BUTTON = wx.NewEventType() EVT_TWO_BUTTON = wx.PyEventBinder(myEVT_TWO_BUTTON, 1) class TwoButtonPanel(wx.Panel): def __init__(self, parent, id=-1, leftText="Left", rightText="Right"): wx.Panel.__init__(self, parent, id) self.leftButton = wx.Button(self, label=leftText) self.rightButton = wx.Button(self, label=rightText, pos=(100,0)) self.leftClick = False self.rightClick = False self.clickCount = 0 self.leftButton.Bind(wx.EVT_LEFT_DOWN, self.OnLeftClick) self.rightButton.Bind(wx.EVT_LEFT_DOWN, self.OnRightClick) def OnLeftClick(self, event): self.leftClick = True self.OnClick() event.Skip() def OnRightClick(self, event): self.rightClick = True self.OnClick() event.Skip() def OnClick(self): self.clickCount += 1 if self.leftClick and self.rightClick: self.leftClick = False self.rightClick = False evt = TwoButtonEvent(myEVT_TWO_BUTTON, self.GetId()) evt.SetClickCount(self.clickCount) self.GetEventHandler().ProcessEvent(evt) class CustomEventFrame(wx.Frame): def __init__(self, parent, id): wx.Frame.__init__(self, parent, id, 'Click Count: 0', size=(300, 100)) panel = TwoButtonPanel(self) self.Bind(EVT_TWO_BUTTON, self.OnTwoClick, panel) def OnTwoClick(self, event): self.SetTitle("Click Count: %s" % event.GetClickCount()) if __name__ == '__main__': app = wx.PySimpleApp() frame = CustomEventFrame(parent=None, id=-1) frame.Show() app.MainLoop()