| 1 | ================================= |
| 2 | Example Programs Using wxPython |
| 3 | ================================= |
| 4 | |
| 5 | -------------------------------------------------- |
| 6 | A survival guide for the post-wx-prefixed world. |
| 7 | -------------------------------------------------- |
| 8 | |
| 9 | :Author: Patrick K. O'Brien |
| 10 | :Contact: pobrien@orbtech.com |
| 11 | :Organization: Orbtech_ |
| 12 | :Date: $Date$ |
| 13 | :Revision: $Revision$ |
| 14 | |
| 15 | .. _Orbtech: http://www.orbtech.com/ |
| 16 | |
| 17 | .. contents:: |
| 18 | |
| 19 | |
| 20 | Introduction |
| 21 | ============ |
| 22 | |
| 23 | This document illustrates example programs using wxPython. All the |
| 24 | examples make use of the new wx package syntax introduced in wxPython |
| 25 | 2.4.1, which is a bit different than older examples you might come |
| 26 | across. |
| 27 | |
| 28 | |
| 29 | Background (with tongue firmly in cheek) |
| 30 | ======================================== |
| 31 | |
| 32 | If something hits you on the head, don't run around screaming that the |
| 33 | sky is falling. Instead, take a close look and see if it wasn't a |
| 34 | "wx" prefix that hit you. Apparently, they're dropping off wxPython |
| 35 | class names like flies dropping dead in the scorching heat of a |
| 36 | summer's day. |
| 37 | |
| 38 | Yes, the world is changing, and even our little wxPython world must |
| 39 | change with it. Then again, I'm not fond of pesky summertime flies, |
| 40 | and I'm not too upset that the "wx" prefixes are going to bite the |
| 41 | dust. I think it's for the best. But, being the kind, considerate |
| 42 | person that I am, I decided to write this guide to make the wx |
| 43 | namespace transition easier for everyone, even Chicken Little. |
| 44 | |
| 45 | .. note:: Say what? |
| 46 | |
| 47 | If you have no idea what I mean by the "wx namespace transition," |
| 48 | consider yourself lucky. You can simply use these examples to |
| 49 | learn wxPython in its current state (beginning with wxPython |
| 50 | version 2.4.1). All you need to know is that previous wxPython |
| 51 | code used a slightly different syntax that some folks (including |
| 52 | me) considered ugly. So we changed it. And that's when the sky |
| 53 | starting falling... |
| 54 | |
| 55 | If you want more of the technical details, read the `wx package |
| 56 | documentation`_. |
| 57 | |
| 58 | .. _wx package documentation: wxPackage.html |
| 59 | |
| 60 | |
| 61 | Rather than simply **tell** you that everything will be okay, I |
| 62 | decided to **show** you that everything will be okay. To do that, |
| 63 | I've created a bunch of example programs using the new wx package. I |
| 64 | hope you like them. |
| 65 | |
| 66 | |
| 67 | Basic Program Example |
| 68 | ===================== |
| 69 | |
| 70 | It doesn't get much simpler than this. Every wxPython program needs |
| 71 | an application and a frame. To encourage good coding habits, I've |
| 72 | split them into separate modules. They don't do much, but they're a |
| 73 | good starting point. |
| 74 | |
| 75 | I include a simple App class in the frame module because the PyWrap |
| 76 | "wrapper" utility (``pywrap``) only works with modules that contain an |
| 77 | application class. So including a simple one in each of your frame |
| 78 | modules allows you to use the PyWrap runtime wrapper and debug your |
| 79 | frames independent of your full application. |
| 80 | |
| 81 | Here is the module (``frame.py``) that defines the frame class: |
| 82 | |
| 83 | .. include:: ../samples/wx_examples/basic/frame.py |
| 84 | :literal: |
| 85 | |
| 86 | And here is the module (``app.py``) that defines the application class |
| 87 | and imports the frame from ``frame.py``: |
| 88 | |
| 89 | .. include:: ../samples/wx_examples/basic/app.py |
| 90 | :literal: |
| 91 | |
| 92 | |
| 93 | Hello wxPython Example |
| 94 | ====================== |
| 95 | |
| 96 | This program displays an image file (``wxPython.jpg``) inside a frame |
| 97 | sized to match the graphic. |
| 98 | |
| 99 | .. figure:: screenshots/hello-win98.png |
| 100 | :scale: 100 |
| 101 | |
| 102 | Running ``hello.py`` on Windows. |
| 103 | |
| 104 | .. figure:: screenshots/hello-linux.png |
| 105 | :scale: 100 |
| 106 | |
| 107 | Running ``hello.py`` on Linux. |
| 108 | |
| 109 | .. figure:: screenshots/hello-mac.png |
| 110 | :scale: 100 |
| 111 | |
| 112 | Running ``hello.py`` on Mac OS X. |
| 113 | |
| 114 | Here is the source code for ``hello.py``: |
| 115 | |
| 116 | .. include:: ../samples/wx_examples/hello/hello.py |
| 117 | :literal: |
| 118 | |