Using tabs for navigation is not unlike switching panels to navigate through sets of widgets. Each tab represents an individual panel, and the panel currently displayed is switched when a tab is pressed. The widget responsible for the arrangement of tabs is wxNotebook. Tabs are created by simply adding pages to the wxNotebook. Let's create some panels and test out the widget:
from wxPython.wx import *
# Create the main window
class Window ( wxFrame ):
def __init__ ( self ):
wxFrame.__init__ ( self, None, -1, 'Frame title.' )
# Create a wxNotebook
self.notebook = wxNotebook ( self, -1 )
self.Show ( True )
# Create a panel
class Panel1 ( wxPanel ):
def __init__ ( self, parent ):
wxPanel.__init__ ( self, parent, -1 )
# Put a label in the panel
self.label = wxStaticText ( self, -1, 'This is the first panel.', pos = ( 25, 25 ) )
# Create another panel
class Panel2 ( wxPanel ):
def __init__ ( self, parent ):
wxPanel.__init__ ( self, parent, -1 )
# Add a few buttons
self.button1 = wxButton ( self, -1, 'This is a button.', pos = ( 5, 5 ) )
self.button2 = wxButton ( self, -1, 'So is this.', pos = ( 30, 30 ) )
self.button3 = wxButton ( self, -1, 'And this.', pos = ( 25, 60 ) )
# Create yet another panel
class Panel3 ( wxPanel ):
def __init__ ( self, parent ):
wxPanel.__init__ ( self, parent, -1 )
# Add a few text boxes
self.text1 = wxTextCtrl ( self, -1, pos = ( 5, 5 ) )
self.text2 = wxTextCtrl ( self, -1, pos = ( 5, 50 ), style = wxTE_MULTILINE )
self.text3 = wxTextCtrl ( self, -1, pos = ( 30, 25 ), style = wxTE_PASSWORD )
application = wxPySimpleApp()
frame = Window()
# Create the panels
instance1 = Panel1 ( frame.notebook )
instance2 = Panel2 ( frame.notebook )
instance3 = Panel3 ( frame.notebook )
# Add the panels
frame.notebook.AddPage ( instance1, 'Panel One' )
frame.notebook.AddPage ( instance2, 'Panel Two' )
frame.notebook.AddPage ( instance3, 'Panel Three' )
application.MainLoop()
As you can see, it's very simple to create a wxNotebook widget and populate it with panels. When the user clicks a tab, the corresponding panel is presented to the user.