wxOython Build on wxWidgets toolkit, extended into Python (akin to the pyLucene work OSAF is doing). wxPython library incorporates numerous modules for users - written in Python. Frame = window (user) everything in the frame is also termed a window (buttons, etc) Binary installers for most platforms. Binaries are built for current and prev python versioin. Unicode not available for OSX yet. For Unicode, all objects become doublebyte. Best way to get acquainted is to run the demo (demonstrates the demo and it's 'liveness'). Will show multiple buttons and box types. Dialogs, text boxes, etc. File dialogs for some platforms are rewritten rather than native types. Notebook controls equal tabbed dialogs. Some interesting controls like TreeList Conftrol. Very limited html rendering capabilities. Embedded widgets, but no ability to set form. exStyledTextCtrl - styled text (Scintilla). Allows syntax highlighting code editing in a control; not a good rich text editor. Standlone windows = parent=None. Notes that GUI apps are fully event driven. So has to include app.MainLoop -------------- import wx class App(wx.App) : def OnInit(self): frame = wx.Frame(parent=None, title='Bare Frame') frame.Show() return true app = App() app.MainLoop() --------------- OR for simple application cases ------------- import wx app = wx.PySimpleApp() frame = wx.Frame(parent=None, title='Bare Frame') frame.show() app.MainLoop() -------------- Question about performance. In most cases time is spent waiting on user, not the inverse. Usually native controls are in place and do well enough. start | event handler event / (user trg) mainLoop -- event handler \ event handler Demonstrated example 'simple' from wxPython Panel = container of controls. Note that constructor defines a container heirarchy (e.g. panel = ex.Panel(self) is contained by the parent window. Or btn = wx.Button(panel,...) is owned by the parent, panel. Presenter ran out of time, pointed to docs. Note that wxPython tends to trap STDOUT, STDIN.