.. wxPython Phoenix documentation

   This file was generated by Phoenix's sphinx generator and associated
   tools, do not edit by hand.

   Copyright: (c) 2011-2020 by Total Control Software
   License:   wxWindows License

.. include:: headings.inc

.. module:: wx.lib.newevent

.. currentmodule:: wx.lib.newevent

.. highlight:: python



.. _wx.lib.newevent:

==========================================================================================================================================
|phoenix_title|  **wx.lib.newevent**
==========================================================================================================================================

Easy generation of new events classes and binder objects.


Description
===========

This module contains two functions which makes the generation of custom wxPython events
particularly easy.


Usage
=====

Sample usage::

    import wx
    import time
    import threading

    import wx.lib.newevent as NE

    MooEvent, EVT_MOO = NE.NewEvent()
    GooEvent, EVT_GOO = NE.NewCommandEvent()

    DELAY = 0.7

    def evt_thr(win):
        time.sleep(DELAY)
        wx.PostEvent(win, MooEvent(moo=1))

    def cmd_thr(win, id):
        time.sleep(DELAY)
        wx.PostEvent(win, GooEvent(id, goo=id))

    ID_CMD1 = wx.NewIdRef()
    ID_CMD2 = wx.NewIdRef()

    class Frame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, None, -1, "MOO")
            sizer = wx.BoxSizer(wx.VERTICAL)
            self.Bind(EVT_MOO, self.on_moo)
            b = wx.Button(self, -1, "Generate MOO")
            sizer.Add(b, 1, wx.EXPAND)
            b.Bind(wx.EVT_BUTTON, self.on_evt_click)
            b = wx.Button(self, ID_CMD1, "Generate GOO with %d" % ID_CMD1)
            sizer.Add(b, 1, wx.EXPAND)
            b.Bind(wx.EVT_BUTTON, self.on_cmd_click)
            b = wx.Button(self, ID_CMD2, "Generate GOO with %d" % ID_CMD2)
            sizer.Add(b, 1, wx.EXPAND)
            b.Bind(wx.EVT_BUTTON, self.on_cmd_click)

            self.Bind(EVT_GOO, self.on_cmd1, id=ID_CMD1)
            self.Bind(EVT_GOO, self.on_cmd2, id=ID_CMD2)

            self.SetSizer(sizer)
            self.SetAutoLayout(True)
            sizer.Fit(self)

        def on_evt_click(self, e):
            t = threading.Thread(target=evt_thr, args=(self, ))
            t.setDaemon(True)
            t.start()

        def on_cmd_click(self, e):
            t = threading.Thread(target=cmd_thr, args=(self, e.GetId()))
            t.setDaemon(True)
            t.start()

        def show(self, msg, title):
            dlg = wx.MessageDialog(self, msg, title, wx.OK)
            dlg.ShowModal()
            dlg.Destroy()

        def on_moo(self, e):
            self.show("MOO = %s" % e.moo, "Got Moo")

        def on_cmd1(self, e):
            self.show("goo = %s" % e.goo, "Got Goo (cmd1)")

        def on_cmd2(self, e):
            self.show("goo = %s" % e.goo, "Got Goo (cmd2)")


    app = wx.App(0)
    f = Frame()
    f.Show(True)
    app.MainLoop()


|function_summary| Functions Summary
====================================

================================================================================ ================================================================================
:func:`~wx.lib.newevent.NewCommandEvent`                                         Generates a new `(command_event, binder)` tuple.
:func:`~wx.lib.newevent.NewEvent`                                                Generates a new `(event, binder)` tuple.
================================================================================ ================================================================================


|



Functions
------------

.. function:: NewCommandEvent()

   Generates a new `(command_event, binder)` tuple.
   
   ::
   
       MooCmdEvent, EVT_MOO = NewCommandEvent()


.. function:: NewEvent()

   Generates a new `(event, binder)` tuple.
   
   ::
   
       MooEvent, EVT_MOO = NewEvent()


