Re: aui based programm terminates with assertion error

[email protected] Tue, 22 Jan 2019 07:26:56 -0800 (PST)
Newsgroups gmane.comp.python.wxpython.devel
Message-ID <[email protected]>
Thanks Robin. That helped.

El lunes, 21 de enero de 2019, 16:55:35 (UTC-3), Robin Dunn escribió:
>
> On Monday, January 21, 2019 at 10:06:18 AM UTC-8, [email protected] 
> <javascript:> wrote:
>>
>> Hi,
>> I am rewriting a large application to use wx.aui. It works very well but 
>> upon terminating I get an assertion error:
>>
>>   File "/Users/ck/devel/peak-o-mat/branches/aui/peak_o_mat/mainframe.py", 
>> line 254, in start
>>     wx.GetApp().MainLoop()
>>   File 
>> "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/wx/core.py"
>> , line 2134, in MainLoop
>>     rv = wx.PyApp.MainLoop(self)
>> wx._core.wxAssertionError: C++ assertion "GetEventHandler() == this" 
>> failed at /Users/robind/projects/buildbots/macosx-vm6/dist-osx-py37/
>> Phoenix/ext/wxWidgets/src/common/wincmn.cpp(478) in ~wxWindowBase(): any 
>> pushed event handlers must have been removed
>>
>>
>> This happens on both OSX and MSW but on the latter in addition python 
>> crashes.
>> python3.7, wxpython-4.0.4
>>
>> What does that message mean? Have I take care of removing those event 
>> handlers by myself? And if yes, how?
>>
>
>
> The assertion happens because the C++ wxAuiManager::SetManagedWindow does 
> this:
>
>     m_frame->PushEventHandler(this);
>
> but there is no corresponding PopEventHandler in the AUI code. 
>
> You can probably avoid the assertion by adding a EVT_CLOSE handler for the 
> Frame passed to SetManagedWindow that does something like this:
>
>     self.PopEventHandler(True)
>     event.Skip()
>
> If something besides a Frame is the managed window then you'll need to 
> adapt to that configuration.
>
> --
> Robin
>  
>

-- 
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.