| 1 | wxPython README |
| 2 | --------------- |
| 3 | |
| 4 | Welcome to the wonderful world of wxPython! |
| 5 | |
| 6 | Once you have installed the wxPython extension module, you can try it |
| 7 | out by going to the [install dir]\wxPython\demo directory and typing: |
| 8 | |
| 9 | python demo.py |
| 10 | |
| 11 | There are also some other sample files there for you to play with and |
| 12 | learn from. |
| 13 | |
| 14 | If you selected to install the documentation then point your browser |
| 15 | to [install dir]\wxPython\docs\index.htm and you will then be looking |
| 16 | at the docs for wxWindows. For the most part you can use the C++ docs |
| 17 | as most classes and methods are used identically. Where there are |
| 18 | differences they are documented with a "wxPython Note." |
| 19 | |
| 20 | On Win32 systems the binary self-installer creates a program group on |
| 21 | the Start Menu that contains a link to running the demo and a link to |
| 22 | the help file. To help you save disk space I'm now using Microsoft's |
| 23 | HTML Help format. If your system doesn't know what to do with the help |
| 24 | file, you can install the HTML Help Viewer as part of IE 4+, NT |
| 25 | Service Pack 4+, or the HTML Workshop at |
| 26 | |
| 27 | http://msdn.microsoft.com/workshop/author/htmlhelp/download.asp. |
| 28 | |
| 29 | |
| 30 | |
| 31 | Getting Help |
| 32 | ------------ |
| 33 | |
| 34 | Since wxPython is a blending of multiple technologies, help comes from |
| 35 | multiple sources. See the http://alldunn.com/wxPython for details on |
| 36 | various sources of help, but probably the best source is the |
| 37 | wxPython-users mail list. You can view the archive or subscribe by |
| 38 | going to |
| 39 | |
| 40 | http://starship.python.net/mailman/listinfo/wxpython-users |
| 41 | |
| 42 | Or you can send mail directly to the list using this address: |
| 43 | |
| 44 | wxpython-users@starship.python.net |
| 45 | |
| 46 | ---------------------------------------------------------------------- |
| 47 | |
| 48 | What's new in 2.1b2 |
| 49 | -------------------- |
| 50 | |
| 51 | Added the missing wxWindow.GetUpdateRegion() method. |
| 52 | |
| 53 | Made a new change in SWIG (update your patches everybody) that |
| 54 | provides a fix for global shadow objects that get an exception in |
| 55 | their __del__ when their extension module has already been deleted. |
| 56 | It was only a 1 line change in .../SWIG/Modules/pycpp.cxx at about |
| 57 | line 496 if you want to do it by hand. |
| 58 | |
| 59 | It is now possible to run through MainLoop more than once in any one |
| 60 | process. The cleanup that used to happen as MainLoop completed (and |
| 61 | prevented it from running again) has been delayed until the wxc module |
| 62 | is being unloaded by Python. |
| 63 | |
| 64 | I fixed a bunch of stuff in the C++ version of wxGrid so it wouldn't |
| 65 | make wxPython look bad. |
| 66 | |
| 67 | wxWindow.PopupMenu() now takes a wxPoint instead of x,y. Added |
| 68 | wxWindow.PopupMenuXY to be consistent with some other methods. |
| 69 | |
| 70 | Added wxGrid.SetEditInPlace and wxGrid.GetEditInPlace. |
| 71 | |
| 72 | You can now provide your own app.MainLoop method. See |
| 73 | wxPython/demo/demoMainLoop.py for an example and some explaination. |
| 74 | |
| 75 | Got the in-place-edit for the wxTreeCtrl fixed and added some demo |
| 76 | code to show how to use it. |
| 77 | |
| 78 | Put the wxIcon constructor back in for GTK as it now has one that |
| 79 | matches MSW's. |
| 80 | |
| 81 | Added wxGrid.GetCells |
| 82 | |
| 83 | Added wxSystemSettings static methods as functions with names like |
| 84 | wxSystemSettings_GetSystemColour. |
| 85 | |
| 86 | Removed wxPyMenu since using menu callbacks have been depreciated in |
| 87 | wxWindows. Use wxMenu and events instead. |
| 88 | |
| 89 | Added alternate wxBitmap constructor (for MSW only) as |
| 90 | wxBitmapFromData(data, type, width, height, depth = 1) |
| 91 | |
| 92 | Added a helper function named wxPyTypeCast that can convert shadow |
| 93 | objects of one type into shadow objects of another type. (Like doing |
| 94 | a down-cast.) See the implementation in wx.py for some docs. |
| 95 | |
| 96 | |
| 97 | |
| 98 | |
| 99 | |
| 100 | What's new in 2.1b1 |
| 101 | -------------------- |
| 102 | Fixed wxComboBox.SetSelection so that it actually sets the selected |
| 103 | item. (Actually just removed it from wxPython and let it default to |
| 104 | wxChoice.SetSelection which was already doing the right thing.) |
| 105 | |
| 106 | Added the Printing Framework. |
| 107 | |
| 108 | Switched back to using the wxWindows DLL for the pre-built Win32 |
| 109 | version. The problem was needing to reinitialize static class info |
| 110 | data after loading each extension module. |
| 111 | |
| 112 | Lots of little tweaks and additions to reflect changes to various |
| 113 | wxWindows classes. |
| 114 | |
| 115 | Fixed a bug with attaching objects to tree items. Actually was a |
| 116 | symptom of a larger problem with not obtaining the interpreter lock |
| 117 | when doing any Py_DECREFs. |
| 118 | |
| 119 | wxSizer and friends. Sizers are layout tools that manage a colection |
| 120 | of windows and sizers. Different types of sizers apply different |
| 121 | types of layout algorithms. You saw it here first! These classes are |
| 122 | not even in the wxWindows C++ library yet! |
| 123 | |
| 124 | |
| 125 | |
| 126 | What's new in 2.0b9 |
| 127 | ------------------- |
| 128 | Bug fix for ListCtrl in test4.py (Was a missing file... DSM!) |
| 129 | |
| 130 | Bug fix for occassional GPF on Win32 systems upon termination of a |
| 131 | wxPython application. |
| 132 | |
| 133 | Added wxListBox.GetSelections returning selections as a Tuple. |
| 134 | |
| 135 | Added a wxTreeItemData that is able to hold any Python object and be |
| 136 | associated with items in a wxTreeCtrl. Added test pytree.py to show |
| 137 | this feature off. |
| 138 | |
| 139 | Added wxSafeYield function. |
| 140 | |
| 141 | OpenGL Canvas can be optionally compiled in to wxPython. |
| 142 | |
| 143 | Awesome new Demo Framework for showing off wxPython and for learning |
| 144 | how it all works. |
| 145 | |
| 146 | The pre-built Win32 version is no longer distributing the wxWindows |
| 147 | DLL. It is statically linked with the wxWindows library instead. |
| 148 | |
| 149 | Added a couple missing items from the docs. |
| 150 | |
| 151 | Added wxImage, wxImageHandler, wxPNGHandler, wxJPEGHandler, |
| 152 | wxGIFHandler and wxBMPHandler. |
| 153 | |
| 154 | Added new methods to wxTextCtrl. |
| 155 | |
| 156 | Fixed some problems with how SWIG was wrapping some wxTreeCtrl |
| 157 | methods. |
| 158 | |
| 159 | |
| 160 | |
| 161 | What's new in 2.0b8 |
| 162 | ------------------- |
| 163 | Support for using Python threads in wxPython apps. |
| 164 | |
| 165 | Several missing methods from various classes. |
| 166 | |
| 167 | Various bug fixes. |
| 168 | |
| 169 | |
| 170 | |
| 171 | What's new in 2.0b7 |
| 172 | ------------------- |
| 173 | Added DLG_PNT and DLG_SZE convienience methods to wxWindow class. |
| 174 | |
| 175 | Added missing constructor and other methods for wxMenuItem. |
| 176 | |
| 177 | |
| 178 | |
| 179 | What's new in 2.0b6 |
| 180 | ------------------- |
| 181 | Just a quickie update to fix the self-installer to be compatible with |
| 182 | Python 1.5.2b2's Registry settings. |
| 183 | |
| 184 | |
| 185 | What's new in 2.0b5 |
| 186 | ------------------- |
| 187 | Well obviously the numbering scheme has changed. I did this to |
| 188 | reflect the fact that this truly is the second major revision of |
| 189 | wxPython, (well the third actually if you count the one I did for |
| 190 | wxWindows 1.68 and then threw away...) and also that it is associated |
| 191 | with the 2.0 version of wxWindows. |
| 192 | |
| 193 | I have finally started documenting wxPython. There are several pages |
| 194 | in the wxWindows documentation tree specifically about wxPython, and I |
| 195 | have added notes within the class references about where and how wxPython |
| 196 | diverges from wxWindows. |
| 197 | |
| 198 | Added wxWindow_FromHWND(hWnd) for wxMSW to construct a wxWindow from a |
| 199 | window handle. If you can get the window handle into the python code, |
| 200 | it should just work... More news on this later. |
| 201 | |
| 202 | Added wxImageList, wxToolTip. |
| 203 | |
| 204 | Re-enabled wxConfig.DeleteAll() since it is reportedly fixed for the |
| 205 | wxRegConfig class. |
| 206 | |
| 207 | As usual, some bug fixes, tweaks, etc. |
| 208 | |
| 209 | |
| 210 | |
| 211 | What's new in 0.5.3 |
| 212 | ------------------- |
| 213 | Added wxSashWindow, wxSashEvent, wxLayoutAlgorithm, etc. |
| 214 | |
| 215 | Various cleanup, tweaks, minor additions, etc. to maintain |
| 216 | compatibility with the current wxWindows. |
| 217 | |
| 218 | |
| 219 | |
| 220 | What's new in 0.5.0 |
| 221 | ------------------- |
| 222 | Changed the import semantics from "from wxPython import *" to "from |
| 223 | wxPython.wx import *" This is for people who are worried about |
| 224 | namespace pollution, they can use "from wxPython import wx" and then |
| 225 | prefix all the wxPython identifiers with "wx." |
| 226 | |
| 227 | Added wxTaskbarIcon for wxMSW. |
| 228 | |
| 229 | Made the events work for wxGrid. |
| 230 | |
| 231 | Added wxConfig. |
| 232 | |
| 233 | Added wxMiniFrame for wxGTK. |
| 234 | |
| 235 | Changed many of the args and return values that were pointers to gdi |
| 236 | objects to references to reflect changes in the wxWindows API. |
| 237 | |
| 238 | Other assorted fixes and additions. |
| 239 | |
| 240 | |
| 241 | |
| 242 | |
| 243 | What's new in 0.4.2 |
| 244 | ------------------- |
| 245 | |
| 246 | wxPython on wxGTK works!!! Both dynamic and static on Linux and |
| 247 | static on Solaris have been tested. Many thanks go to Harm |
| 248 | <H.v.d.Heijden@phys.tue.nl> for his astute detective work on tracking |
| 249 | down a nasty DECREF bug. Okay so I have to confess that it was just a |
| 250 | DSM (Dumb Stupid Mistake) on my part but it was nasty none the less |
| 251 | because the behavior was so different on different platforms. |
| 252 | |
| 253 | The dynamicly loaded module on Solaris is still segfaulting, so it |
| 254 | must have been a different issue all along... |
| 255 | |
| 256 | |
| 257 | |
| 258 | What's New in 0.4 |
| 259 | ----------------- |
| 260 | |
| 261 | 1. Worked on wxGTK compatibility. It is partially working. On a |
| 262 | Solaris/Sparc box wxPython is working but only when it is statically |
| 263 | linked with the Python interpreter. When built as a dyamically loaded |
| 264 | extension module, things start acting weirdly and it soon seg-faults. |
| 265 | And on Linux both the statically linked and the dynamically linked |
| 266 | version segfault shortly after starting up. |
| 267 | |
| 268 | 2. Added Toolbar, StatusBar and SplitterWindow classes. |
| 269 | |
| 270 | 3. Varioius bug fixes, enhancements, etc. |
| 271 | |
| 272 | ---------------------------------------------------------------------- |
| 273 | |
| 274 | |
| 275 | |
| 276 | Build Instructions |
| 277 | ------------------ |
| 278 | I used SWIG (http://www.swig.org) to create the source code for the |
| 279 | extension module. This enabled me to only have to deal with a small |
| 280 | amount of code and only have to bother with the exceptional issues. |
| 281 | SWIG takes care of the rest and generates all the repetative code for |
| 282 | me. You don't need SWIG to build the extension module as all the |
| 283 | generated C++ code is included under the src directory. |
| 284 | |
| 285 | I added a few minor features to SWIG to control some of the code |
| 286 | generation. If you want to playaround with this the patches are in |
| 287 | wxPython/SWIG.patches and they should be applied to the 1.1p5 version |
| 288 | of SWIG. These new patches are documented at |
| 289 | http://starship.skyport.net/crew/robind/#swig, and they should also |
| 290 | end up in the 1.2 version of SWIG. |
| 291 | |
| 292 | wxPython is organized as a Python package. This means that the |
| 293 | directory containing the results of the build process should be a |
| 294 | subdirectory of a directory on the PYTHONPATH. (And preferably should |
| 295 | be named wxPython.) You can control where the build process will dump |
| 296 | wxPython by setting the TARGETDIR makefile variable. The default is |
| 297 | $(WXWIN)/utils/wxPython, where this README.txt is located. If you |
| 298 | leave it here then you should add $(WXWIN)/utils to your PYTHONPATH. |
| 299 | However, you may prefer to use something that is already on your |
| 300 | PYTHONPATH, such as the site-packages directory on Unix systems. |
| 301 | |
| 302 | |
| 303 | Win32 |
| 304 | ----- |
| 305 | |
| 306 | 1. Build wxWindows with wxUSE_RESOURCE_LOADING_IN_MSW set to 1 in |
| 307 | include/wx/msw/setup.h so icons can be loaded dynamically. While |
| 308 | there, make sure wxUSE_OWNER_DRAWN is also set to 1. |
| 309 | |
| 310 | 2. Change into the $(WXWIN)/utils/wxPython/src directory. |
| 311 | |
| 312 | 3. Edit makefile.vc and specify where your python installation is at. |
| 313 | You may also want to fiddle with the TARGETDIR variable as described |
| 314 | above. |
| 315 | |
| 316 | 4. Run nmake -f makefile.vc |
| 317 | |
| 318 | 5. If it builds successfully, congratulations! Move on to the next |
| 319 | step. If not then you can try mailing me for help. Also, I will |
| 320 | always have a pre-built win32 version of this extension module at |
| 321 | http://alldunn.com/wxPython/. |
| 322 | |
| 323 | 6. Change to the $(WXWIN)/utils/wxPython/demo directory. |
| 324 | |
| 325 | 7. Try executing the demo program. For example: |
| 326 | |
| 327 | python demo.py |
| 328 | |
| 329 | To run it without requiring a console, you can use the pythonw.exe |
| 330 | version of Python either from the command line or from a shortcut. |
| 331 | |
| 332 | |
| 333 | |
| 334 | Unix |
| 335 | ---- |
| 336 | 0. I configure wxWindows like this, YMMV: |
| 337 | |
| 338 | ./configure --with-gtk --disable-shared --enable-threads --disable-unicode |
| 339 | |
| 340 | 1. Change into the $(WXWIN)/utils/wxPython/src directory. |
| 341 | |
| 342 | 2. Edit Setup.in and ensure that the flags, directories, and toolkit |
| 343 | options are correct. See the above commentary about TARGETDIR. There |
| 344 | are a few sample Setup.in.[platform] files provided. |
| 345 | |
| 346 | [I've written a Setup which should work in almost all Unix systems, |
| 347 | so that the steps 1 and 2 don't have to be done. Robert Roebling. ] |
| 348 | |
| 349 | 3. Run this command to generate a makefile: |
| 350 | |
| 351 | make -f Makefile.pre.in boot |
| 352 | |
| 353 | 4. Run these commands to build and then install the wxPython extension |
| 354 | module: |
| 355 | |
| 356 | make |
| 357 | |
| 358 | 4b. Log in as root. [Robert Roebling] |
| 359 | |
| 360 | make install |
| 361 | |
| 362 | 4c. Log out from root. [Robert Roebling] |
| 363 | |
| 364 | |
| 365 | 5. Change to the $(WXWIN)/utils/wxPython/tests directory. |
| 366 | |
| 367 | 6. Try executing the demo program. For example: |
| 368 | |
| 369 | python demo.py |
| 370 | |
| 371 | ---------------- |
| 372 | Robin Dunn |
| 373 | robin@alldunn.com |
| 374 | |
| 375 | |
| 376 | |