ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> pythoncard
pythoncard
RE: [Pythoncard-users] what does an event object look like
by Kevin Altis other posts by this author
Apr 19 2002 5:11PM messages near this date
RE: [Pythoncard-users] what does an event object look like | [Pythoncard-users] PythonCard release 0.6.5
Doh, forgot to mention that you should use the runtime Message Watcher (-m
on the command-line) to view the events that fire for different components
and the order they fire. That's what it is there for.

If nobody is using the Message Watcher, we could actually simplify the
framework event dispatch a bit by removing it, but I still use it to
diagnose problems, especially underlying wxPython/wxWindows bugs which
aren't apparenent without seeing the actual events.

ka

>  -----Original Message-----
>  From: pythoncard-users-admin@[...].net
>  [mailto:pythoncard-users-admin@[...].net]On Behalf Of Kevin
>  Altis
>  Sent: Friday, April 19, 2002 10:07 AM
>  To: pythoncard-Users
>  Subject: RE: [Pythoncard-users] what does an event object look like
> 
> 
>  > From: David Primmer
>  >
>  > I'm interested what I can do to inspect event objects. When making an
>  > event handler, what can I do with the event? What are the most common
>  > useful events? Are they different for buttons and menus?  I tried making
>  > a copy of an event object and then investigating the namespace with
>  > pycrust and executing some of it's methods like GetClassName() but that
>  > just crashes my app. Where would I find, for example, the name of the
>  > control that sent the event?
> 
>  PythonCard events are just wxPython events with a few extra
>  attributes added
>  such as the target (eventObject), the mouse position, modifier
>  key state and
>  key code if the event was for a key press. Except for the 'target'
>  attribute, not all events have all the attributes. The 'target' is the
>  object generating the event, so its name 'event.target.name' should be the
>  same as the name in your event handler. For example, this assertion should
>  be true:
> 
>      def on_btn1_mouseClick(self, event):
>          assert event.target.name == 'btn1'
> 
>  A background handler might handle an event type for multiple components:
> 
>      def on_mouseClick(self, event):
>          print event.target.name
> 
>  The tictactoe sample uses a single background handler for the
>  playing field.
> 
>  The most common events are probably mouseClick and select which
>  are actually
>  wxCommandEvents. Don't forget to look at the state of the
>  framework messages
>  on the documentation page:
>  http://pythoncard.sourceforge.net/documentation.html
>  in particular the post about events and handlers
>  http://pythoncard.sourceforge.net/text/events_and_handlers.txt
> 
>  The code that adds the attributes are in binding.py. As you can see we
>  aren't currently adding many attributes, but these are the most typically
>  used.
> 
>          try:
>              # all events should have GetEventObject()
>              aWxEvent.target = aWxEvent.GetEventObject()
>              aWxEvent.eventObject = aWxEvent.target
>          except:
>              pass
>          try:
>              # mouse and key events
>              aWxEvent.position = aWxEvent.GetPosition()
>              aWxEvent.x = aWxEvent.GetX()
>              aWxEvent.y = aWxEvent.GetY()
>              aWxEvent.altDown = aWxEvent.AltDown()
>              aWxEvent.controlDown = aWxEvent.ControlDown()
>              aWxEvent.shiftDown = aWxEvent.ShiftDown()
>          except:
>              pass
>          try:
>              # key events
>              aWxEvent.keyCode = aWxEvent.GetKeyCode()
>          except:
>              pass
> 
> 
>  To see all of the available methods and the different types of event
>  objects, look at the wxPython documentation under events. So far, that
>  wrapped events we're generating include: wxCalendarEvent (Calendar
>  component), wxCommandEvent (mouseClick, select, most of the common actions
>  are wxCommandEvents), wxFocusEvent (gainFocus, loseFocus), wxKeyEvent,
>  wxMouseEvent
> 
>  For the most part, PythonCard user code shouldn't have to worry
>  about these
>  event classes and their methods.
> 
>  To investigate the event, you'll want to use event.Clone() to make a copy.
>  Any event you clone using wxPython 2.3.2.1 will result in a
>  memory leak, but
>  that shouldn't matter for investigation purposes.
> 
>  ka
> 
> 
>  _______________________________________________
>  Pythoncard-users mailing list
>  Pythoncard-users@[...].net
>  https://lists.sourceforge.net/lists/listinfo/pythoncard-users
> 


_______________________________________________
Pythoncard-users mailing list
Pythoncard-users@[...].net
https://lists.sourceforge.net/lists/listinfo/pythoncard-users
Thread:
David Primmer
Kevin Altis
Kevin Altis

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved