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.