First things first...
I'm not going to try and teach the Python language here. You can do that at the Python Tutorial. I'm also going to assume that you know a bit about wxWindows already, enough to notice the similarities in the classes used.
Take a look at the following wxPython program. You can find a similar program in the wxPython/tests directory, named test7.py. If your Python and wxPython are properly installed, you should be able to run it by issuing this command:
001: ## import all of the wxPython GUI package
002: from wxPython.wx import *
003:
004: ## Create a new frame class, derived from the wxPython Frame.
005: class MyFrame(wxFrame):
006:
007: def __init__(self, parent, id, title):
008: # First, call the base class' __init__ method to create the frame
009: wxFrame.__init__(self, parent, id, title,
010: wxPoint(100, 100), wxSize(160, 100))
011:
012: # Associate some events with methods of this class
013: EVT_SIZE(self, self.OnSize)
014: EVT_MOVE(self, self.OnMove)
015:
016: # Add a panel and some controls to display the size and position
017: panel = wxPanel(self, -1)
018: wxStaticText(panel, -1, "Size:",
019: wxDLG_PNT(panel, wxPoint(4, 4)), wxDefaultSize)
020: wxStaticText(panel, -1, "Pos:",
021: wxDLG_PNT(panel, wxPoint(4, 14)), wxDefaultSize)
022: self.sizeCtrl = wxTextCtrl(panel, -1, "",
023: wxDLG_PNT(panel, wxPoint(24, 4)),
024: wxDLG_SZE(panel, wxSize(36, -1)),
025: wxTE_READONLY)
026: self.posCtrl = wxTextCtrl(panel, -1, "",
027: wxDLG_PNT(panel, wxPoint(24, 14)),
028: wxDLG_SZE(panel, wxSize(36, -1)),
029: wxTE_READONLY)
030:
031:
032: # This method is called automatically when the CLOSE event is
033: # sent to this window
034: def OnCloseWindow(self, event):
035: # tell the window to kill itself
036: self.Destroy()
037:
038: # This method is called by the system when the window is resized,
039: # because of the association above.
040: def OnSize(self, event):
041: size = event.GetSize()
042: self.sizeCtrl.SetValue("%s, %s" % (size.width, size.height))
043:
044: # tell the event system to continue looking for an event handler,
045: # so the default handler will get called.
046: event.Skip()
047:
048: # This method is called by the system when the window is moved,
049: # because of the association above.
050: def OnMove(self, event):
051: pos = event.GetPosition()
052: self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y))
053:
054:
055: # Every wxWindows application must have a class derived from wxApp
056: class MyApp(wxApp):
057:
058: # wxWindows calls this method to initialize the application
059: def OnInit(self):
060:
061: # Create an instance of our customized Frame class
062: frame = MyFrame(NULL, -1, "This is a test")
063: frame.Show(true)
064:
065: # Tell wxWindows that this is our main window
066: self.SetTopWindow(frame)
067:
068: # Return a success flag
069: return true
070:
071:
072: app = MyApp(0) # Create an instance of the application class
073: app.MainLoop() # Tell it to start processing events
074:
Things to notice