Home arrow Python arrow Page 2 - A Close Look at wxPython Controls

wxComboBox and wxListBox - Python

Controls are, obviously, essential to your wxPython applications. They allow you to gather input from the user so that you can make decisions based on that input. Let's take a close look at a few controls availible to you and your applications. This article will cover wxChoice, wxComboBox, wxListBox and wxTextCtrl. It is the third one in a series about wxPython.

TABLE OF CONTENTS:
  1. A Close Look at wxPython Controls
  2. wxComboBox and wxListBox
  3. wxListBox is versatile
  4. wxTextCtrl
  5. Password text boxes, read-only text boxes
By: Peyton McCullough
Rating: starstarstarstarstar / 15
July 06, 2005

print this article
SEARCH DEV SHED

TOOLS YOU CAN USE

advertisement

The wxComboBox and wxListBox controls are similar to wxChoice. The three controls share many methods. Let's take a quick look at the two controls and compare them with wxChoice:

from wxPython.wx import *

class OurFrame ( wxFrame ):

   def __init__ ( self ):

      wxFrame.__init__ ( self, None, -1, 'wxPython' )

      self.panel = wxPanel ( self, -1 )

      # Create the wxChoice control

      self.choice = wxChoice ( self.panel, -1, choices = [ 'A', 'B', 'C', 'D' ] )

      # Create the wxComboBox control

      self.combo = wxComboBox ( self.panel, -1, '0', choices = [ '1', '2', '3', '4' ] )

      # Create the wxListBox control

      self.list = wxListBox ( self.panel, -1, choices = [ 'I', 'II', 'III', 'IV' ] )

      # Append an option to each control

      self.choice.Append ( 'E' )

      self.combo.Append ( '5' )

      self.list.Append ( 'V' )

      # Delete an option from each control

      self.choice.Delete ( 0 )

      self.combo.Delete ( 0 )

      self.list.Delete ( 0 )

      # Replace choices

      self.choice.SetString ( 1, 'X' )

      self.combo.SetString ( 1, 'X' )

      self.list.SetString ( 1, 'X' )

      # Count items

      self.choice.itemNum = self.choice.GetCount()

      self.combo.itemNum = self.combo.GetCount()

      self.list.itemNum = self.list.GetCount()

      # Add a button

      self.button = wxButton ( self.panel, 100, 'Click' )

      EVT_BUTTON ( self.panel, 100, self.click )

      self.sizer = wxBoxSizer ( wxVERTICAL )

      self.sizer.Add ( self.choice, 0 )

      self.sizer.Add ( self.combo, 0 )

      self.sizer.Add ( self.list, 0 )

      self.sizer.Add ( self.button, 0 )

      self.panel.SetSizerAndFit ( self.sizer )

      self.Show ( True )

   def click ( self, event ):

      # Display the position of all selections

      print self.choice.GetSelection(), self.combo.GetSelection(), self.list.GetSelection()

      # Display the selection

      print self.choice.GetStringSelection(), self.combo.GetStringSelection(), self.list.GetStringSelection()

application = wxPySimpleApp()

window = OurFrame()

application.MainLoop()

The wxComboBox and wxListBox controls, however, do contain additional methods that you may use. First, we will tackle wxComboBox. As you know, wxComboBox provides the user with both a list and a text box. If you played around with the last example a bit, you probably saw that the GetStringSelection method will not return values that the user has typed in. Since GetSelection will return -1, however, it is easy to work around this:

from wxPython.wx import *

class OurFrame ( wxFrame ):

   def __init__ ( self ):

      wxFrame.__init__ ( self, None, -1, 'wxPython' )

      self.panel = wxPanel ( self, -1 )

      self.combo = wxComboBox ( self.panel, -1, choices = [ '1', '2', '3', '4' ] )

      self.button = wxButton ( self.panel, 100, 'Click' )

      EVT_BUTTON ( self.panel, 100, self.click )

      self.sizer = wxBoxSizer ( wxVERTICAL )

      self.sizer.Add ( self.combo, 0 )

      self.sizer.Add ( self.button, 0 )

      self.panel.SetSizerAndFit ( self.sizer )

      self.Show ( True )

   def click ( self, event ):

      if self.combo.GetSelection() == -1:

         self.combo.userValue = self.combo.GetValue()

      else:

         self.combo.userValue = self.combo.GetStringSelection()

      print self.combo.userValue

application = wxPySimpleApp()

window = OurFrame()

application.MainLoop()



 
 
>>> More Python Articles          >>> More By Peyton McCullough
 

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort
   

PYTHON ARTICLES

- Python Big Data Company Gets DARPA Funding
- Python 32 Now Available
- Final Alpha for Python 3.2 is Released
- Python 3.1: String Formatting
- Python 3.1: Strings and Quotes
- Python 3.1: Programming Basics and Strings
- Tuples and Other Python Object Types
- The Dictionary Python Object Type
- String and List Python Object Types
- Introducing Python Object Types
- Mobile Programming using PyS60: Advanced UI ...
- Nested Functions in Python
- Python Parameters, Functions and Arguments
- Python Statements and Functions
- Statements and Iterators in Python

Developer Shed Affiliates

 


Dev Shed Tutorial Topics: