Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
Principles or a GUI and their practical application using wxPthon

From today's training - a private course that was brief Python revision followed by an introduction to GUIs (in the form of wxPython ...

I started with a generic intordcution to GUIs ... written in the form of a source code file in Python:

  # principles of a GUI
  #
  # Provides a "Framework" and "Helpers"
  #
  # (somewhere here - load / initialse model)
  # 1. Define components ("widgets")
  # 2. Define a geometry ("layout")
  # 3. Define my events
  #
  # BEFORE you
  #
  # (4. Display initial view)
  # 5. Await an event
  # 6. Process that event
  # 7. go to step 5


and then I went on to add real code into each of the sections. Here is the implementation for each step:

# Provides a "Framework" and "Helpers"
  import wx

# load / initialse model
  import mymodel

# Create an empty shell for the various els.
  app = wx.PySimpleApp()
  class RailStationApp(wx.Frame):
    def __init__(this):
      wx.Frame.__init__(this, None,wx.ID_ANY,"About rail places", (600,200))


# 1. Define components ("widgets")
  this.myWoof = wx.Button(this,1,"Gypsy")
  this.myYap = wx.Button(this,2,"Billy")


# 2. Define a geometry ("layout")
  this.geom = wx.BoxSizer(wx.VERTICAL)
  this.geom.Add(this.myWoof)
  this.geom.Add(this.myYap)
  this.SetSizer(this.geom)
  this.SetAutoLayout(1)
  this.geom.Fit(this)


# 3. Define my events
  this.Bind(wx.EVT_BUTTON,this.feed,this.myWoof)
  this.Bind(wx.EVT_BUTTON,this.walk,this.myYap)
  def feed(this,event): print "We are out of Bonios"
  def walk(this,event): print "Peeing down with rain"


# 4. Display initial view
  this.Show(True)

# 5. Await an event
# 6. Process that event
# 7. go to step 5
  app.MainLoop()

There's a few more wrapper and invocation lines - compete template [here] and the full implementation[here].

Having put the rudiments of each step into place, I moved on to ...

Add a label and change event handlers so that feedback appeared within the GUI (see [here].

Add a whole list of data elements and a loop of buttons, with a single event handler working for all of the buttons [here]

And finally switching to use data from my model to load the GUI and present dynamic information [here]

Image - samples of the four application examples

(written 2015-11-30)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Y207 - wxPython
  [903] Pieces of Python - (2006-10-23)
  [2013] wxPython - Introduction and sample - (2009-01-29)
  [2744] PyQt (Python and Qt) and wxPython - GUI comparison - (2010-04-28)
  [2887] Snow Leopard and Python (that is OS X 10.6 and wxPython) - (2010-07-26)
  [3081] wxPython - simple example to add GUI to a server log file analysis - (2010-12-08)
  [3086] Sizers (geometry control) in a wxPython GUI - a first example - (2010-12-15)
  [3092] wxPython geometry - BoxSizer example - (2010-12-17)
  [3139] Steering our Python courses towards wxPython, SQLite and Django - (2011-01-19)

Q910 - Object Orientation and General technical topics - GUI principles
  [2746] Model - View - Controller demo, Sqlite - Python 3 - Qt4 - (2010-04-29)
  [4258] Keeping you Tkinter display up to date while monitoring - (2014-04-06)


Back to
What teach you in a week stays with you for a decade
Previous and next
or
Horse's mouth home
Forward to
Progress on moving from Python 2 to Python 3 - training for both versions
Some other Articles
Command line parameter handling in Python via the argparse module
A comparison of the public transport alternatives to the Royal United Hospital, Bath - from Melksham.
From single block to structure and object oriented programming
Progress on moving from Python 2 to Python 3 - training for both versions
Principles or a GUI and their practical application using wxPthon
What teach you in a week stays with you for a decade
shell - bash. Writing conditional tests and statements - the options available
Extending your bash shell with aliases, functions and extra commands
What is make? What is gcc?
Bash ... some new scripts to - handling user input
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2024: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/4589_Pri ... Pthon.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb