86 lines
2.1 KiB
Python
86 lines
2.1 KiB
Python
|
|
||
|
from wxPython.wx import *
|
||
|
import sys
|
||
|
|
||
|
#----------------------------------------------------------------------
|
||
|
|
||
|
myEVT_BUTTON_CLICKPOS = 5015
|
||
|
|
||
|
def EVT_BUTTON_CLICKPOS(win, id, func):
|
||
|
win.Connect(id, -1, myEVT_BUTTON_CLICKPOS, func)
|
||
|
|
||
|
|
||
|
|
||
|
class MyEvent(wxPyCommandEvent):
|
||
|
def __init__(self, evtType, id):
|
||
|
wxPyCommandEvent.__init__(self, evtType, id)
|
||
|
self.myVal = None
|
||
|
|
||
|
#def __del__(self):
|
||
|
# print '__del__'
|
||
|
# wxPyCommandEvent.__del__(self)
|
||
|
|
||
|
def SetMyVal(self, val):
|
||
|
self.myVal = val
|
||
|
|
||
|
def GetMyVal(self):
|
||
|
return self.myVal
|
||
|
|
||
|
|
||
|
|
||
|
class MyButton(wxButton):
|
||
|
def __init__(self, parent, id, txt, pos):
|
||
|
wxButton.__init__(self, parent, id, txt, pos)
|
||
|
EVT_LEFT_DOWN(self, self.OnLeftDown)
|
||
|
|
||
|
def OnLeftDown(self, event):
|
||
|
pt = event.GetPosition()
|
||
|
evt = MyEvent(myEVT_BUTTON_CLICKPOS, self.GetId())
|
||
|
evt.SetMyVal(pt)
|
||
|
#print id(evt), sys.getrefcount(evt)
|
||
|
self.GetEventHandler().ProcessEvent(evt)
|
||
|
#print id(evt), sys.getrefcount(evt)
|
||
|
event.Skip()
|
||
|
|
||
|
|
||
|
|
||
|
class TestPanel(wxPanel):
|
||
|
def __init__(self, parent, log):
|
||
|
wxPanel.__init__(self, parent, -1)
|
||
|
self.log = log
|
||
|
|
||
|
b = MyButton(self, -1, " Click me ", wxPoint(30,30))
|
||
|
EVT_BUTTON(self, b.GetId(), self.OnClick)
|
||
|
EVT_BUTTON_CLICKPOS(self, b.GetId(), self.OnMyEvent)
|
||
|
|
||
|
wxStaticText(self, -1, "Please see the Overview and Demo Code for details...",
|
||
|
wxPoint(30, 80))
|
||
|
|
||
|
|
||
|
def OnClick(self, event):
|
||
|
self.log.WriteText("OnClick\n")
|
||
|
|
||
|
def OnMyEvent(self, event):
|
||
|
#print id(event), sys.getrefcount(event)
|
||
|
self.log.WriteText("MyEvent: %s\n" % (event.GetMyVal(), ) )
|
||
|
|
||
|
|
||
|
#----------------------------------------------------------------------
|
||
|
|
||
|
def runTest(frame, nb, log):
|
||
|
win = TestPanel(nb, log)
|
||
|
return win
|
||
|
|
||
|
#----------------------------------------------------------------------
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
overview = """\
|
||
|
This demo is a contrived example of defining an event class in wxPython and sending it up the containment heirachy for processing.
|
||
|
"""
|
||
|
|
||
|
|
||
|
|
||
|
|