[wxPython-users] nested window sizers crashes wxpython

Colin Mcphail colin.mcphail at mac.com
Sat Mar 15 04:39:06 PDT 2008


On 14 Mar 2008, at 22:05, Tim Black wrote:

> I have a wx.App that crashes upon laying out a window, and I can't  
> figure out
> what I'm doing wrong. Basically, I'd like to have a Static Box  
> outline an entire
> panel. Inside this static box I'd like to have a more complex  
> control layout. So
> I decided to use a wx.GridBagSizer for all the controls, and then  
> stick that
> inside a wx.StaticBoxSizer, and set the panel's sizer to the  
> StaticBoxSizer. wx
> crashes everytime I call the panel's SetSizer method, passing it the
> StaticBoxSizer. Note that I am not using wx.StaticBoxSizer, but my  
> own custom
> StaticBoxSizer class. I've attached the app code below. The really  
> strange thing
> is that I have 2 panel classes that are almost identical, and  
> creating one of
> them (MyPanel) does not create a crash, but creating the other one
> (MyOtherPanel) causes the crash. Let me know if you have any ideas  
> what might be
> going on here... FYI: I'm on win32, Python 2.5.2 (r252:60911, Feb 21  
> 2008,
> 13:11:45), wx-2.8-msw-unicode.
> Thanks,
> Tim
>
> ...
> class MyOtherPanel(wx.Panel):
>    """Creating one of these seems to crash wxPython."""
>    def __init__(self, parent):
>        wx.Panel.__init__(self, parent, -1)
>        self.MainStaticBoxSizer = StaticBoxSizer(self, wx.HORIZONTAL,
> label="MyOtherPanel" )
>        self.Sizer = wx.GridBagSizer(2, 2) # vgap, hgap

> ...

Class MyOtherPanel inherits an instance variable called Sizer from  
wx.Panel.  Your class overwrites whatever information wx is keeping in  
it.
It would probably be a good idea to start your instance variable names  
with a lower case letter to avoid clashes.

Regards,
--CMcP 




More information about the wxpython-users mailing list