A Look at wxPython - Creating Menus (
Page 4 of 6 )
One of the uses of a status bar is to display details about a certain menu option. Let's create a menu for our window. Our menu bar will contain two categories: One and Two. They will each have four options: 1, 2, 3 and 4 and A, B, C and D, respectively. Let's bring our plan to life:
from wxPython.wx import *
application = wxPySimpleApp()
window = wxFrame ( None, wxID_ANY, 'Title Here.' )
window.CreateStatusBar()
# Create "One" and fill it with the options
one = wxMenu()
one.Append ( 100, '1', 'This text will display in the status bar.' )
one.Append ( 101, '2', 'So will this.' )
one.Append ( 102, '3', 'Option three.' )
one.Append ( 103, '4', 'Option four.' )
one.AppendSeparator()
one.Append ( 104, '5', 'This is isolated from the rest.' )
# Create "Two" and fill it with the options
two = wxMenu()
two.Append ( 105, 'A', 'A.' )
two.Append ( 106, 'B', 'B.' )
two.Append ( 107, 'C', 'C.' )
two.Append ( 108, 'D', 'D.' )
two.Append ( 109, 'E', 'E.' )
# Now, we'll add the menu bar and put in the two categories
bar = wxMenuBar()
bar.Append ( one, 'One' )
bar.Append ( two, 'Two' )
# Finally, we'll put in the menu bar
window.SetMenuBar ( bar )
window.Show ( True )
application.MainLoop()
Adding a menu isn't very hard, is it? The only thing I would like to point out here is the numbers you see passed to Append. Each menu option must have its own unique number, or the menu will not function properly.
If we want to make our menu more complex, we can do so. Execute this code for something more advanced than our last example:
from wxPython.wx import *
application = wxPySimpleApp()
window = wxFrame ( None, wxID_ANY, 'Title Here.' )
window.CreateStatusBar()
# Create a top-level menu
parent = wxMenu()
# Create a child menu that will be added to the parent menu
child = wxMenu()
child.Append ( 100, 'Option 1', 'Option 1.' )
child.Append ( 101, 'Option 2', 'Option 2.' )
# Add the child menu to the parent menu
parent.AppendMenu ( 102, '&Child\tShift C', child )
# Add another menu
# This menu will contain items that work like radio boxes
radio = wxMenu()
radio.Append ( 103, 'First', 'First.', wxITEM_RADIO )
radio.Append ( 104, 'Second', 'Second.', wxITEM_RADIO )
# Add yet another menu
# The options in this menu will behave like checkboxes
check = wxMenu()
check.Append ( 105, 'Former', 'Former.', wxITEM_CHECK )
check.Append ( 106, 'Latter', 'Latter.', wxITEM_CHECK )
# Create a menu bar
bar = wxMenuBar()
bar.Append ( parent, 'Parent' )
bar.Append ( radio, 'Radio' )
bar.Append ( check, 'Check' )
window.SetMenuBar ( bar )
window.Show ( True )
application.MainLoop()