[wxPython-users] 2 panels in a NotebookPage

Rickey, Kyle W Kyle.Rickey at bakerhughes.com
Wed Oct 24 06:47:07 PDT 2007


I guess I don't understand why you need 2 panels. Why not add everything to 1 panel and use multiple sizers to get the layout you want? I've modified your demo below. Perhaps you could post some sample code for the matplotlib and checkboxes scenario and we could look for the problem.

Kyle Rickey


#!/usr/bin/env python

import wx

class MyPage( wx.NotebookPage):
  def __init__(self, parent):
    wx.NotebookPage.__init__(self, parent, -1)
    sizer = wx.BoxSizer(wx.VERTICAL)

    self.panel = wx.Panel(self)
    
    sizer.Add(self.createBoxes(), 0, 0)
    sizer.Add(self.createBoxes (), 0, wx.TOP, 30)

    self.panel.SetSizer(sizer)
    self.panel.Fit()

  def createBoxes(self):
    """
    Create a set of checkboxes. Here a specific sizer is used
    """
    sizer = wx.GridSizer(4, 7)
    for x in range(0, 4):
      for y in range(0, 7):
        box = wx.CheckBox(self.panel, -1, '%d-%d' %(x, y))
        sizer.Add(box)
    return sizer

class MainFrame(wx.Frame):
  def __init__(self):
    wx.Frame.__init__(self, None, -1)
    self.notebook = wx.Notebook(self)
    self.notebook.AddPage(MyPage( self.notebook), "test")

class App(wx.App):
  def OnInit(self):
    'Create the main window and insert the custom frame'
    frame = MainFrame()
    frame.Show(True)

    return True 

app = App(0)
app.MainLoop()

-----Original Message-----
From: Matthieu Brucher [mailto:matthieu.brucher at gmail.com] 
Sent: Wednesday, October 24, 2007 12:33 AM
To: wxPython-users at lists.wxwidgets.org
Subject: Re: [wxPython-users] 2 panels in a NotebookPage

No, in fact I want to have a group of checkboxes with a Matplotlib figure, but the same bug occurs, so for the sake of simplicity, I use twice the same panel.
2007/10/23, Rickey, Kyle W < Kyle.Rickey at bakerhughes.com>:
Are you trying to separate the checkboxes into groups? You can do so with a staticbox. Check out the demo, it's got a good example for staticboxes.
 
-----Original Message-----
From: Matthieu Brucher [mailto:matthieu.brucher at gmail.com] 
Sent: Tuesday, October 23, 2007 4:18 PM
To: wxPython-users at lists.wxwidgets.org
Subject: [wxPython-users] 2 panels in a NotebookPage
 
Hi,

I'm trying to get two simple panels with somecheckboxes appear on a classic NotebookPage. The problem is that they do not display themselves correctly :

#!/usr/bin/env python

import wx

class MyPage( wx.NotebookPage):
  def __init__(self, parent):
    wx.NotebookPage.__init__(self, parent, -1)
    sizer = wx.BoxSizer(wx.VERTICAL)

    sizer.Add(self.createBoxes(), 0, 0)
    sizer.Add(self.createBoxes (), 0, 0)

    self.SetSizer(sizer)
    self.Fit()

  def createBoxes(self):
    """
    Create a set of checkboxes. Here a specific sizer is used
    """
    panel = wx.Panel(self)
    sizer = wx.GridSizer(4, 7)
    for x in range(0, 4):
      for y in range(0, 7):
        box = wx.CheckBox(panel, -1, '%d-%d' %(x, y))
        sizer.Add(box)
    panel.SetSizer (sizer)
    panel.Fit()
    return panel

class MainFrame(wx.Frame):
  def __init__(self):
    wx.Frame.__init__(self, None, -1)
    self.notebook = wx.Notebook(self)
    self.notebook.AddPage(MyPage( self.notebook), "test")

class App(wx.App):
  def OnInit(self):
    'Create the main window and insert the custom frame'
    frame = MainFrame()
    frame.Show(True)

    return True 

app = App(0)
app.MainLoop()

With this sample, two panels are created with createBoxes(), but only one is displayed and usable.
Is there an obvious mistake in what I'm doing ?

Matthieu




More information about the wxpython-users mailing list