I was having some trouble getting a window to resize when the contained controls were shown or hidden. After some searching and experimentation, I found this sequence to work:
def OnInit( self ):
self.res = wxXmlResource( GUI_FILENAME )
self.frame = self.res.LoadFrame( None, GUI_MAINFRAME_NAME )
self.frame.Show(1)
self.showControls = XRCCTRL(self.frame, 'showControls')
self.controlPanel = XRCCTRL(self.frame, 'controlPanel')
self.Bind( EVT_TOGGLEBUTTON, self.OnChange, self.showControls)
return 1
def OnChange(self, event):
sizer = self.frame.GetSizer()
sizer.Show( self.controlPanel, show=self.showControls.GetValue(), recursive=true)
size=sizer.GetMinSize()
self.frame.SetMinSize(size)
self.frame.Fit()
where gui.xrc is:
<?xml version="1.0" encoding="cp1252"?>
<resource>
<object class="wxFrame" name="FRAME1">
<title>Test</title>
<centered>1</centered>
<object class="wxBoxSizer">
<orient>wxVERTICAL</orient>
<object class="sizeritem">
<object class="wxToggleButton" name="showControls">
<label>Show Controls</label>
<checked>1</checked>
</object>
</object>
<object class="sizeritem">
<object class="wxPanel" name="controlPanel">
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<object class="wxStaticText" name="theLabel">
<label>Label:</label>
</object>
</object>
<object class="sizeritem">
<object class="wxTextCtrl" name="theTextControl"/>
<option>1</option>
</object>
</object>
</object>
</object>
</object>
</object>
</resource>
2/1 Update – had wrong app code in place





