ANN: wxPython

Robin Dunn robin at
Wed Jan 11 05:59:16 CET 2006


The release of wxPython is now available for download at  There have been many enhancements
and fixes implemented in this version, listed below and at

What is wxPython?

wxPython is a GUI toolkit for the Python programming language. It
allows Python programmers to create programs with a robust, highly
functional graphical user interface, simply and easily. It is
implemented as a Python extension module that wraps the GUI components
of the popular wxWidgets cross platform library, which is written in

wxPython is a cross-platform toolkit. This means that the same program
will usually run on multiple platforms without modifications.
Currently supported platforms are 32-bit Microsoft Windows, most Linux
or other Unix-like systems using GTK2, and Mac OS X 10.2+, in most
cases the native widgets are used on each platform.

Changes in

wxMSW: Fix for bug #1211907, popup menu indenting inconsistent with

wxMac: Don't send an event for wx.RadioButton deselections, just the
selections.  This was done to make it consistent with the other

wxMSW: Always set flat toolbar style, even under XP with themes: this
is necessary or separators aren't shown at all.

Fixes for bug #1217872, pydocview.DocService not correctly initialized.

Fix for bug #1217874, Error in parameter name in DocManager.CreateView.

Added wrappers for the wx.RendererNative class.

Added the wx.lib.splitter module, which contains the
MultiSplitterWindow class.  This class is much like the standard
wx.SplitterWindow class, except it allows more than one split, so it
can manage more than two child windows.

Docview and IDE patch from Morgan Hua with fix for bug #1217890
"Closing view crashes Python" plus some new features::

     New feature added to the IDE is 'Extensions'.  Under
     Tools|Options|Extensions, you can add calls to external programs.
     For example you can add a "Notepad" extension (under windows) that
     will exec Notepad on the currently open file.  A new "Notepad"
     menu item will appear under the Tools menu.

Some fixes to XRCed to make encoding errors a bit more user friendly.

XRCed changes from Roman Rolinsky:

     * Added new controls (Choicebook, Listbook, StatusBar,
       DatePicker), and completed style flags. Test window is opened
       for an available parent control if no specific view
       defined. Better handling of exceptions (highlighting does not
       'stick' anymore).

     * Use system clipboard for Copy/Paste.

     * Improved some dialogs (window styles, growable cols). Changed
       the range for wxSpinCtrl min/max to all integers (default 0/100
       is not always good).

Updates for wx.lib.foldpanelbar and wx.lib.hyperlink from Andrea

Fix for Bug #1283496: wxPython TheClipboard class causes problems for
pychecker.  Ensure the app has been created before initializing

Fix for Bug #1352602: FileBrowseButtonWithHistory can't type in Value.

wxHTML: Added space after list item number.

wx.lib.printout:  Applied patch #1384440.

wxMSW:  Fix for Bug #1293225 Window_FromHWND crashes if parent is

Fix for Bug #1261669, use a wx.TE_RICH2 style for the Process demo so
it doesn't fill up too soon.

Applied Patch #1354389: wxPython MenuItem SetBitmaps fix.

Applied Patch #1239456: wxPython wx.DataObject.GetAllFormats fix.

Applied Patch # #1230107 which allows image handlers to be written in
Python by deriving from wx.PyImageHandler.

Applied patch #1072210: generalize to allow text printing.

Applied patch #1243907: Give Throbber much more flexibility by
allowing the user to set the rest image, the direction, the current
index, custom sequence.  Allows user to manually step through the
sequence with Next(), Previous(), Increment(), Decrement() &
SetCurrent(). Very handy if you have multiple throbbers that you want
to synchronize with a single timer.

Fix for bug #1336711: wx.lib.calendar.CalenDlg can yield incorrect

Applied patch from Morgan Hua for updates to ActiveGrid code
(pydocview, ActiveGrid IDE, etc.)

Applied patch #1326241: Supporting " install --install-headers=path"

Applied patch from Morgan Hua to fix bug #1219423: CommandManager
should not repeat old commands after a branch.

Applied patch #1238825 adding search backward capabilities to the
demo.  Modified to use the up/down options in the wx.FindReplaceDialog
instead of a separate menu item.

Fix for bug #1266745 and #1387725 in the wx.FindReplaceDialog on MSW.
Actually check we are using MSLU before doing the hack designed to
workaround a bug in MSLU!

wxMSW: wx.lib.iewin.IEHtmlWindow now properly handles tabbing, return
and other special keys properly.

Lots of PyCrust enhancments started by Franz Steinaeusler, Adi Sieker,
and Sebastian Haase, and which in turn were further enhanced, fixed
tweaked and finished up by me.  The changes include the following:

     * The Autocomplete and Calltip windows can now be opened manually
       with Ctrl-Space and Ctrl-Shift-Space.

     * In the stand alone PyCrust app the various option settings,
       window size and position, and etc. are saved and restored at the
       next run.

     * Added a help dialog bound to the F1 key that shows the key

     * Added a new text completion function that suggests words from
       the history.  Bound to Shift-Return.

     * F11 will toggle the maximized state of the frame.

     * switched to Bind() from wx.EVT_*().

     * Display of line numbers can be toggled.

     * F12 toggles a "free edit" mode of the shell buffer.  This mode
       is useful, for example, if you would like to remove some output
       or errors or etc. from the buffer before doing a copy/paste.
       The free edit mode is designated by the use of a red,
       non-flashing caret.

     * Ctrl-Shift-F will fold/unfold (hide/show) the selected lines.

     * General code cleanup and fixes.

     * Use wx.StandardPaths to determine the location of the config

     * Use wx.SP_LIVE_UPDATE on crust and filling windows.

     * Extended the saving of the config info and other new features to
       the PyShell app too.  Additionally, other apps that embed a
       PyCrust or a PyShell can pass their own wx.Config object and
       have the Py code save/restore its settings to/from there.

     * All of the classes with config info get an opportunity to
       save/load their own settings instead of putting all the
       save/load code in one place that then has to reach all over the
       place to do anything.

     * Enable editing of the startup python code, which will either be
       the file pointed to by PYTHONSTARTUP or a file in the config dir
       if PYTHONSTARTUP is not set in the environment.

     * Added an option to skip the running of the startup code when
       PyShell or PyCrust starts.

     * PyCrust adds a pp(item) function to the shell's namespace that
       pretty prints the item in the Display tab of the notebook.
       Added code to raise that tab when pp() is called.

     * Added an option for whether to insert text for function
       parameters when popping up the call tip.

     * Added Find and Find-Next functions that use the

Applied patches from Will Sadkin for wx.lib.masked modules:

     * Now ignores kill focus events when being destroyed.

     * Added missing call to set insertion point on changing fields.

     * Modified SetKeyHandler() to accept None as means of removing

     * Fixed keyhandler processing for group and decimal character

     * Fixed a problem that prevented input into the integer digit of a
       integerwidth=1 numctrl, if the current value was 0.

     * Fixed logic involving processing of "_signOk" flag, to remove
       default sign key handlers if false, so that
       SetAllowNegative(False) in the NumCtrl works properly.

     * Fixed selection logic for numeric controls so that if
       selectOnFieldEntry is true, and the integer portion of an
       integer format control is selected and the sign position is
       selected, the sign keys will always result in a negative value,
       rather than toggling the previous sign.

wx.FontMapper.SetConfig is deprecated.  You should instead just set an
application-wide config object with wx.Config.Set, which wx.FontMapper
will use by default.

Added wx.GetMouseState which returns the current state of the mouse.
It returns an instance of a wx.MouseState object that contains the
current position of the mouse pointer in screen coordinants, as well
as boolean values indicating the up/down status of the mouse buttons
and the modifier keys.

Added wx.SizerItem.SetUserData

A variety of updates to wx.lib.floatcanvas, including Added
DrawObjects, including a ScaledTextBox, with auto-wrapping, etc, and
Scaled and Unscaled Bitmap Objects.

        WARNING: Changed all DrawObjects to take an (x,y) pair rather
        than individual x,y parameters. Also changed rectangles and
        ellipses to take (w,h) pair. This is an API change, but should
        be easy to accommodate, all you need to do is add a parenthesis
        pair:  (...x, y, ...) --->  (...(x,y), ...)

More information about the Python-announce-list mailing list