Added the sample code from wxPython In Action to the samples dir
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
64
wxPython/samples/wxPIA_book/Chapter-03/customEvent.py
Normal file
64
wxPython/samples/wxPIA_book/Chapter-03/customEvent.py
Normal file
@@ -0,0 +1,64 @@
|
||||
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()
|
Reference in New Issue
Block a user