Search code examples
pythonmodel-view-controllerwxpythondrywxwidgets

How to layout all children of a wxPanel?


I have a wxPython application which allows the users to select items from menus that then change what is visible on the screen. This often requires a recalculation of the layout of panels. I'd like to be able to call the layout of all the children of a panel (and the children of those children) in reverse order. That is, the items with no children have their Layout() function called first, then their parents, and so on.

Otherwise I have to keep all kinds of knowledge about the parents of panels in the codes. (i.e. how many parents will be affected by a change in this-or-that panel).


Solution

  • More in response to your comment to Jon Cage's answer, than to your original question (which was perfectly answered by Jon):

    The user might find it irritating, if the position of every element in your dialog changes, when he makes a choice. Maybe it'll look better, if only the "variable part" is updated. To achieve this, you could make a panel for each set of additional controls. The minimum size of each panel should be the minimum size of the largest of these panels. Depending on the user's choice you can hide or show the desired panel.

    Alternatively, wxChoicebook might be what you need?