wxPython: Looping over all children of a sizer

F. GEIGER fgeiger at datec.at
Sun May 23 08:14:50 EDT 2004


Since you are the one who's stuffing all the controls into the sizer, you
are the one knowing how much of them have been stuffed into it, i.e. add
them all to an internal list, as you add them to a sizer.

To remove one of them you have to call wxSizer::Remove().

HTH
Franz GEIGER


"Piet" <pit.grinja at gmx.de> schrieb im Newsbeitrag
news:39cbe663.0405200038.3406d131 at posting.google.com...
> Hello,
> I need some help with the design of a "dynamic" wxDialog.
> The dialog window is divided into several sizers, the first contains a
> wxComboBox. When choosing an entry from this wxComboBox, a second
> sizer (RowColSizer) will be populated with some controls, the number
> and type of which will depend on the selected ComboBox-Entry. That
> works fine for the first selection: The wxDialog is enlarged to give
> room for the new controls. But when I make another selection, I get an
> error saying that some positions in the sizer are populated twice. It
> is obvious that the sizer has to be cleared before I put in the new
> controls. I checked the documentation and found the Remove-Method for
> sizers. Unfortunately, this method seems only to be able to remove a
> sizer completely (which is not want I want, because the sizer will be
> repopulated in the next step, and I dont want to recreate it, because
> the sizer has to keep its position in the dialog relative to the other
> sizers) or to remove the item with the specified position (which is no
> alternative as well, because the number of childs or controls in the
> sizer will vary).
> Now my question: is there a clearall-Method for sizers that removes
> all the items in the sizer or is there a function to get the number of
> childs in the sizer so that I could write something like
> for i in range(sizer.GetNumberOfChildren()):
>     sizer.Remove(i)
>
> That would help me a lot.
> Thanks in advance
> Piet





More information about the Python-list mailing list