Resizable Tabbed (wxNotebook) Dialog

Robert Amesz sheershion at mailexpire.com
Sat Aug 17 11:20:27 EDT 2002


Jose M. Balaguer wrote:

> This is an example of using a Tabbed (wxNotebook) Dialog with
> resizable controls. (It took me more than 2 days to realize I had
> to use wxPanel instead of wxWindows controls)

Two days... That seems a bit long. Didn't you study the demo? Anyway, 
just a couple comments:


1 - If you want a normal-looking dialog, you'd better replace:
   wxDialog.__init__(self, parent, -1, title, style=wxRESIZE_BORDER)

by:

   wxDialog.__init__(self, parent, -1, title,
      style=wxRESIZE_BORDER|wxCAPTION|wxSYSTEM_MENU)


2 - Although it probably doen't make a great deal of difference here as 
it's the only window in the sizer, generally it is better to for a 
wxNotebookCtrl to be managed by a wxNotebookSizer. Things like Fit() or 
SetSizeHints() should work better that way.

In this example, because the sizer has just the one child, it is 
sufficient to replace:

   dialog_sizer = wxBoxSizer(wxVERTICAL)
   dialog_sizer.Add(notebook, 1, wxEXPAND|wxALL, 5)

by:

   dialog_sizer = wxNotebookSizer(notebook)

but in general, the wxNotebookSizer would be an additional sizer: 
instead of adding the notebook control directly to some sizer, you'd 
add the wxNotebookSizer.

Personally, I'd say that the fact than you need a special kind of sizer 
for notebooks would indicate that the interface between windows and 
sizers isn't quite optimal[*]. Still, overall it works well.


Robert Amesz
-- 
[*] Perhaps there should something like a 'resizable' base class, which 
both wxSizers and wxWindows should derive from?



More information about the Python-list mailing list