wxPython MDI question

rockmuelle cmueller at onebox.com
Thu Feb 21 19:32:31 EST 2002


I am trying to create an MDI application that has a list control on
the left side of the main MDI frame and the MDI client area on the
right side, similar to the way Visual Studio has other windows
surrounding its client area.

I've tried creating the list control and then adding it and the client
area to a sizer, but the client area always takes up the whole main
frame. The client area and the list control are situated at (0, 0), as
if there was no sizer.  If I add more controls to the sizer, the
non-client area windows get layed out correctly, but the sizer and
client area still overlap.

Does anyone know how to fix this?

I'm using wxPython 2.3.1 with Python 2.1.1 on Windows 2K.  Code
demonstrating what I've tried is appended to this message.

Thanks.

-Chris


from wxPython.wx import *

class MyMDIFrame(wxMDIParentFrame):
  """
  Main frame that has list control and MDI client area.
  """

  def __init__(self, parent, id=-1, title='MDI Example'):
    wxMDIParentFrame.__init__(self, parent, id, title=title)

    sizer = wxBoxSizer(wxHORIZONTAL)
    sizer.Add(wxListCtrl(self, -1))
    sizer.Add(wxListCtrl(self, -1))  # add another list
    sizer.Add(self.GetClientWindow())
    sizer.Layout()

    self.SetSizer(sizer)
    self.Fit()
    
    return


if __name__=="__main__":

  class App(wxApp):

    def OnInit(self):
      frame = MyMDIFrame(NULL)
      frame.Show(true)
      self.SetTopWindow(frame)

      return true

  app = App(0)
  app.MainLoop()



More information about the Python-list mailing list