A Look at wxPython - Some Widgets (
Page 6 of 6 )
Now let's add some controls to our window. First, though, let's shift the structure of our application. Instead of throwing everything in the global namespace, let's create a class –- a subclass of wxFrame. While we're add it, how about setting the size of our window?
from wxPython.wx import *
class Window ( wxFrame ):
def __init__ ( self ):
wxFrame.__init__ ( self, None, wxID_ANY, 'Title', size = ( 350, 350 ) )
self.Show ( True )
application = wxPySimpleApp()
window = Window()
application.MainLoop()
Now we're ready. Let's add a simple button to our window:
from wxPython.wx import *
class Window ( wxFrame ):
def __init__ ( self ):
wxFrame.__init__ ( self, None, wxID_ANY, 'Title', size = ( 350, 350 ) )
self.button = wxButton ( self, 100, 'Click' )
self.Show ( True )
application = wxPySimpleApp()
window = Window()
application.MainLoop()
Ugh, it takes up the whole window. This can be fixed by putting it in a panel:
from wxPython.wx import *
class Window ( wxFrame ):
def __init__ ( self ):
wxFrame.__init__ ( self, None, wxID_ANY, 'Title', size = ( 350, 350 ) )
self.panel = wxPanel ( self, wxID_ANY )
self.button = wxButton ( self.panel, 100, 'Click' )
self.Show ( True )
application = wxPySimpleApp()
window = Window()
application.MainLoop()
That's better. Now let's add a text box:
from wxPython.wx import *
class Window ( wxFrame ):
def __init__ ( self ):
wxFrame.__init__ ( self, None, wxID_ANY, 'Title', size = ( 350, 350 ) )
self.panel = wxPanel ( self, wxID_ANY )
self.button = wxButton ( self.panel, 100, 'Click' )
self.text = wxTextCtrl ( self.panel, 101, 'Some text.', ( 100, 100 ) )
self.Show ( True )
application = wxPySimpleApp()
window = Window()
application.MainLoop()
Now let's make our button do something. I won't get into detail about this, since it's pretty simple to understand:
from wxPython.wx import *
class Window ( wxFrame ):
def __init__ ( self ):
wxFrame.__init__ ( self, None, wxID_ANY, 'Title', size = ( 350, 350 ) )
self.panel = wxPanel ( self, wxID_ANY )
self.button = wxButton ( self.panel, 100, 'Click' )
self.text = wxTextCtrl ( self.panel, 101, 'Some text.', ( 100, 100 ) )
EVT_BUTTON ( self.panel, 100, self.click )
self.Show ( True )
def click ( self, event ):
message= wxMessageDialog ( self, 'You clicked the button.', 'Clicked', wxICON_EXCLAMATION )
message.ShowModal()
message.Destroy()
application = wxPySimpleApp()
window = Window()
application.MainLoop()
Wrapping Up
So far, you've learned a little bit about wxPython. You know how to create two simple dialogs, how to create a simple frame, how to create a menu and how to add two basic controls to a panel. That is all I'll explain in this article, but wxPython is a very large library, so don't think that this is it. Dozens of controls, dialogs and frames can be used in your applications –- way more than I can cover in a single article. However, stay tuned. This is definitely not the end.