For 2023 - 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)
Some other Articles
Command line parameter handling in Python via the argparse moduleA comparison of the public transport alternatives to the Royal United Hospital, Bath - from Melksham.From single block to structure and object oriented programmingProgress on moving from Python 2 to Python 3 - training for both versionsPrinciples or a GUI and their practical application using wxPthonWhat teach you in a week stays with you for a decadeshell - bash. Writing conditional tests and statements - the options availableExtending your bash shell with aliases, functions and extra commandsWhat 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).
|
|