wx.PyEvent cloning

James Wettenhall <[email protected]>
Newsgroups gmane.comp.python.wxpython.devel
Message-ID <[email protected]>
Hi,

I'm having an issue with wx.PyEvents while testing my application with 
Phoenix  I think it's related to this change to wx.PyEvent's Clone method: 
https://github.com/wxWidgets/Phoenix/commit/360e3e6b2f9f14429a992a47e9a4df93202f9fee

I have tried unsuccessfully to come up with a small reproducible code 
sample demonstrating the problem, but I'll try to describe it.

I define a custom event class, using a similar method to wx.lib.newevent's 
NewEvent, something like this:

class MyPyEvent(wx.PyEvent):
    def __init__(self, **kw):
        wx.PyEvent.__init__(self)
        if 'phoenix' in wx.PlatformInfo:
            self._getAttrDict().update(kw)
        else:
            self.__dict__.update(kw)

I then instantiate an event and give it a "nextEvent" attribute:

event = MyPyEvent(nextEvent=anotherEvent)

This event is posted with wx.PostEvent and then handled by an event handler.
The event handler starts a thread, passing the event as an argument.
The thread's worker does some potentially time-consuming stuff and then 
calls wx.PostEvent(event.nextEvent)

When testing with Phoenix, I have found that unless I explicitly Clone() 
the event before passing it from the event handler to the thread's worker, 
sometimes the event's "nextEvent" attribute is missing at the time the 
thread's worker tries to post the nextEvent, and that calling 
event._getAttrDict().keys() in the thread's worker can give:

    sys.stdout.write("Check. event._getAttrDict().keys() = %s\n" % 
event._getAttrDict().keys())

RuntimeError: wrapped C/C++ object of type Event has been deleted


Is this expected behaviour (that I should need to Clone() the event before 
passing it from an event handler to a thread worker)?


Thanks,

James


-- 
You received this message because you are subscribed to the Google Groups "wxPython-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/d/optout.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.