It seems to work (only tested with embedding_in_wx4.py). I guess it's something related to things nesting in a slightly wrong way, right enough to show up but wrong enough to only show up :)
I hope this helps. Daniel Substitute embedding_in_wx4.py's CanvasFrame with: class CanvasFrame(wxFrame): def __init__(self): # Begin just like embedding_in_wx4.py wxFrame.__init__(self,None,-1, 'CanvasFrame',size=(550,350)) self.figure = Figure(figsize=(5,4), dpi=100) self.axes = self.figure.add_subplot(111) t = range(0,30) s = [randint(1, 30)* random() * x for x in t] self.axes.plot(t,s) # Add panels from deepest level self.main_panel = wxPanel(self, -1) # Parent is main_panel: self.graph_panel = wxPanel(self.main_panel, -1) # self.canvas is child of graph_panel... self.canvas = FigureCanvas(self.graph_panel, -1, self.figure) # ... as is textgraph self.text_graph = wxTextCtrl(self.graph_panel, -1, "Hello!\n" + "I'm in graph_panel", style=wxTE_MULTILINE) self.toolbar = MyNavigationToolbar(self.canvas, True) self.toolbar.Realize() self.graph_panel_sizer = wxBoxSizer(wxVERTICAL) tw, th = self.toolbar.GetSizeTuple() fw, fh = self.canvas.GetSizeTuple() self.toolbar.SetSize(wxSize(fw, th)) self.graph_panel_sizer.Add(self.toolbar, 0, wxEXPAND) # After the toolbar, add its siblings to graph_panel_sizer self.graph_panel_sizer.Add(self.canvas, 1, wxEXPAND) self.graph_panel_sizer.Add(self.text_graph) self.graph_panel.SetSizer(self.graph_panel_sizer) self.graph_panel.Fit() # graph_panel is done, just add it to main_panel's sizer. self.main_panel_sizer = wxBoxSizer(wxVERTICAL) self.text_in = wxTextCtrl(self.main_panel, -1, "Inside main_panel", style=wxTE_MULTILINE) # Here: self.main_panel_sizer.Add(self.graph_panel,1, wxEXPAND) self.main_panel_sizer.Add(self.text_in,0, wxEXPAND) self.main_panel.SetSizer(self.main_panel_sizer) self.main_panel.Fit() self.sizer = wxBoxSizer(wxVERTICAL) self.sizer.Add(self.main_panel, 1, wxEXPAND) self.sizer_text = wxBoxSizer(wxHORIZONTAL) self.text_hi = wxTextCtrl(self, -1, "Hello :)", style=wxTE_MULTILINE) self.text_out = wxTextCtrl(self, -1,"Outside main_panel", style=wxTE_MULTILINE|wxEXPAND) self.sizer_text.Add(self.text_hi, 0, wxEXPAND) self.sizer_text.Add(self.text_out, 0, wxEXPAND) self.sizer.Add(self.sizer_text, 0, wxEXPAND) EVT_PAINT(self, self.OnPaint) self.toolbar.update() self.SetSizer(self.sizer) self.Fit() def OnPaint(self, event): self.canvas.draw() event.Skip() -- http://mail.python.org/mailman/listinfo/python-list