wxPython Changelog

What's new in wxPython 4.2.1

Jun 8, 2023
  • The biggest change in this release is the addition of Mac and Windows builds for both Python 3.11 and Python 3.12 (beta). In addition there have been some updates in the distro versions used for the Linux wheels available at the extras archive, including some with Python 3.11 builds.

New in wxPython 4.2.0 (Aug 9, 2022)

  • New and improved in this release:
  • Yes, it's been a VERY long time since the last release. I'm not dead, just on an extended break. It took me a while to get up to speed on a new day job, and then there was a seemingly perpetual crunch-mode to get the product through a couple release cycles. I can't say that things are fully back to normal yet, but at least I now know what I'm doing. Mostly. <wink>
  • This release is built using the wxWidgets' 3.2.0 release tag.
  • Tweaked the build scripts a bit to ensure that on non-Windows platforms that the compiler and flags used by default match those used by wxWidgets, (with the flags needed by Python added on.) The compiler commands can be overridden by setting CC and CXX in the environment if needed. #1247
  • On Windows the build code that locates and sets up the environment for the MSVC compiler no longer relies on distutils code, but is now using more modern code in setuptools instead. This enables much more compiler flexibility and wxPython should now be buildable with Visual Studio versions from 2015 through 2022+.
  • Switched to SIP 6 for generating the wrapper code. Rather than a standalone executable, SIP is now a Python package that needs to be installed in the Python environment used for the build. A dependency has been added to requirements/devel.txt to help ensure that the correct version is installed. The wx.siplib module code is no longer kept in the repository, but is generated during the build.
  • Changed wx.App.InitLocale to just do locale.setlocale(locale.LC_ALL, "C") to undo what Python (3.8+ on Windows) does. This lets wxWidgets start with an uninitialized locale as it expects. #1637
  • Fixed issues related to time_t always being treated as a 32-bit value on Windows. #1910
  • Added wx.FullScreenEvent and wx.EVT_FULLSCREEN.
  • The legacy, OSX-Only wx.webkit module has been removed.
  • Fix building wxPython with Python 3.10 on Windows #2016
  • Fix PyProgress on Windows by avoiding invalid sizer flags #1985
  • Fix 'More Grid Features' in demo
  • Many of the widgets which deal with bitmaps have been changed to use a wx.BitmapBundle object instead of wx.Bitmap. This is the mechanism which wxWidgets has implemented for adapting to things like Hi-DPI displays. Essentially you can load a list of bitmaps of different sizes (but similar or scaled content) into a wx.BitmapBundle, and the widget can choose one based on the display density. Existing code should be able to continue to pass a wx.Bitmap to the widget constructor or to methods like SetBitmap, as wxPython will automatically convert from a wx.Bitmap to a wx.BitmapBundle containing the single image provided.
  • Add support for new wx.grid event, EVT_GRID_ROW_MOVE
  • Fix path issues in wx.lib.agw.multidirdialog #2120
  • Fix eventwatcher checkAll(check=False) #2139
  • Fix exception on grid labels click #1841
  • Fix a large number of Python 3.10 issues. In Python 3.10, a change was implemented where extension functions that take integer arguments will no longer silently accept non-integer arguments (e.g., floats) that can only be converted to integers with a loss of precision. Fixed most of these issues in the pure-Python classes and demos by explicitly converting the parameters to int before passing them to wxWidgets. There is loss of precision, but this was happening before (automatically) anyway as most wxWidgets DeviceContext functions operate using integers.
  • Fix PlotCanvas point label drawing on Linux
  • Fix GetPopupMenu override for wx.adv.TaskbarIcon #2067
  • Fix invisible text in lib.plot with dark theme
  • Add new button type: ShowHideToggleButton. Like a ToggleButton, but with an associated "menu", a Window or Sizer which is shown/hidden when button is toggled. Includes methods for setting active and inactive fore/background colours.
  • Fix unbinding of events in FIFO order #2027
  • Enable customization of layout of pdfviewer button panel
  • Support newer PyMuPDF versions #2205
  • IntCtrl: Change default colour to wx.NullColour so the default color will be used. #2215
  • Change PopupControl to respect all the parameters passed to its init method. #2218
  • Fixes in flatmenu.py Remove and DestroyItem #2219
  • Using the MinGW toolchain to build wxPython has been simplified a bit. #2211

New in wxPython 4.0.7.0 (Oct 28, 2019)

  • This release is comprised mostly of fixes and minor features which have been back-ported from the master branch. This release is likely the last release of the 4.0.x release series, and is certainly the last 4.0.x release that will support Python 2.7. It may still continue to build for Python 2.7 for some time, but no extra effort will be expended to keep it compatible.
  • This release provides the following changes:
  • Bug fixes in wx.lib.calendar: key navigation across month boundaries is now possible; key navigation now sets the date and fires the EVT_CALENDAR event; setter APIs now set the date correctly #1230.
  • Switch to using a wx.Overlay in the Widget Inspection Tool to highlight widgets when running on a GTK3 port.
  • Fixed issue in wx.lib.agw.customtreectrl where label editor could remain stuck forever #1235.
  • Fix a sometimes crash when using a wx.Overlay by letting the wx.DCOverlay hold a reference to the DC, to ensure that the DCOverlay is destroyed first. PR#1301
  • Ported the embedding sample from Classic, which shows how to use wxPython from a C++ wxWidgets application that embeds Python. PR#1353
  • Fixed wx.GetApp() to use wxWidgets' global wxApp instance instead of maintaining its own pointer. This way, if the wxApp is created by C++ code wxPython will still be able to get access to it. #1126
  • Several other PRs have been backported from the master branch (which will become wxPython 4.1.0), the full list can be seen on GitHub here.

New in wxPython 4.0.6.0 (May 22, 2019)

  • This is a quick-fix release to take care of the following issues:
  • Fixed char pointers in generated stub code to have a valid pointer value.
  • Reverted the change that loads up install_requires from the contents of requirements.txt. Split the requirements.txt file into one for install and one for development.

New in wxPython 4.0.5.0 (May 20, 2019)

  • Added missing HtmlWindow.ScrollToAnchor method, and also a couple methods in HtmlCell too. (#1141)
  • Added missing setters for the wheel-related properties in wx.MouseEvent. (#1140)
  • Updated wxWidgets commit reference, bringing fixes for #1140, #1086 and #1147.
  • Fix the use of the output parameter in HtmlWindow.OnOpeningURL the same way it was fixed in HtmlWindowInterface.OnHTMLOpeningURL. (#1068)
  • Fixed a crashing bug when using a member of a transient wx.VisualAttributes object. Also set the attributes to be read-only to simplify the fix. (#1198)
  • Updated the sip being used in wxPython builds to version 4.19.16.
  • Added helper functions to check results of wxWidgets configure during the build of wxPython. Currently used to determine if the wx webview, glcanvas, and media libraries should be added to the link command. (#1138)
  • Fixed scrollbar issue with ListCtrlAutoWidthMixin (#1215)
  • Fixed file access in the wx.py and wx.tools.pywxrc packages to be Python 2 and 3 compatible. (#1193, #1156)
  • Fixes for building with Python 3.8 on Linux. (#1227)

New in wxPython 4.0.3.0 (Jun 27, 2018)

  • Fixed a linking problem on macOS. The new waf added an explicit link to the Python shared library which meant that it would try to load it at runtime, even if a different Python (such as Anaconda, EDM or Homebrew) was used to import wxPython. This, of course, caused runtime errors. (#892)
  • Sort pages by dock_pos when added to automatic (agw.aui) notebook. (#882)
  • Fix a bug in py.introspect.getTokens. (#889)
  • Added Vagrant configuration for Fedora-28. Removed Fedora-23 (#884)
  • Added wrappers for the wx.WindowIDRef class and added the wx.NewIdRef function. These will make it possible to create reserved Window IDs using the same mechanism which is used when passing wx.ID_ANY to a widget constructor. The object returned by wx.NewIdRef will automatically convert to an int when passing it to a window constructor, and can also be used as the source in a Bind(). (#896)
  • Fixed issue when sys.prefix is not unicode (Python2) and when its contents are not translatable to utf-8.

New in wxPython 4.0.2.0 (Jun 18, 2018)

  • Fixed wx.html2.EVT_WEBVIEW_NAVIGATING event not being sent on some versions of Linux. (#741)
  • wx.Sizers can now be used as an iterator to iterate over the items within the sizer. (#738)
  • Fix Python3 division in ThumbnailCtrl. (#746)
  • Fix leaking image list in CheckListCtrlMixin (#752)
  • All items marked as deprecated in the wxWidgets interface (documentation) files will now throw a DeprecationWarning when used from wxPython. Many of these items are disappearing in 4.1 so it's important to ensure they are deprecated at runtime too instead of just in the docs. (#749)
  • Ensure that the attribute list given to the GLCanvas constructor is zero-terminated like it was in Classic. (#770)
  • Updated to the wxWidgets 3.0.4 release version.
  • Added the wxWidgets version number to the tail end of the string returned by wx.version().
  • Bind EVT_WINDOW_DESTROY event only to the tree windows in CustomTreeCtrl, since otherwise it would be caught when child windows are destroyed too, which causes problems in this case. (#778)
  • Fixed a problem where wx.TreeCtrl.OnCompareItems was not being called in derived classes on Windows. This was due to an optimization that wasn't compatible with how the classes are wrapped. (#774)
  • Added wrappers for wx.ClassInfo and exposed wx.Object.GetClassInfo. This class is part of wxWidgets' internal type information system and although it is not very useful for Python applications it is useful for debugging some internal wxPython issues.
  • Removed the wx.lib.pubsub package, and replaced it with code that imports the standalone PyPubSub in order remain compatible with older code that still uses wx.lib.pubsub. (#782, #792)
  • Fixed bug in wx.lib.intctrl (#790)
  • Fixed subclassing of wx.TextCompleter and wx.TextCompleterSimple (#827)
  • Fixes for Python3 compatibility in PyCrust. (#823)
  • Fix wxGet to be able to use pip v10. (#817)
  • Change winid parameter in wx.ScrolledWindow to id, for consistency. (#816)
  • Ensure that the page exists in book controls GetPage and RemovePage methods. At least one of the wx ports do not do this. (#830)
  • Added missing wx.NumberEntryDialog
  • Change wx.TextCompleterSimple.GetCompletions to send the list of strings as a return value, rather than a parameter that gets filled. (#836)
  • Enabled the wx.GraphicsContext.Create(metaFileDC) wrapper (#811)
  • Metafile support is also available on OSX, so wx.msw.Metafile and wx.msw.MetafileDC have been moved to the core wx module. So they can now be accessed as wx.Metafile and wx.MetafileDC.
  • Updated the waf tool used by the build to version 2.0.7. This fixes problems with building for Python 3.7.
  • Fixed alignment in buttons on MSW which have had foreground or background colors set. (#815)
  • Fix for unexpected assertion inside wx.aui.AuiMDIChildFrame.Close.
  • Fix a bug in setting AuiDockingGuide size. (#727)
  • Remove unnecessary AUI notebook updating, and use wx.BufferedDC in Repaint() to mitigate flicker. (wx.lib.agw.aui). (#851, #686)
  • Fixed crashing bug when using client data with items in wx.dataview.DataViewTreeCtrl. (#856)
  • Detach wx.Control in AuiToolbar from current sizer before attach to a new one. (#843)
  • Fixed a problem in wx.lib.mixins.listctrl.TextEditMixin where the height of the editor widget could be set to zero. (See discussion in #849)
  • Fix a bug in calculating whether a tool fits into the AuiToolBar. (#863)
  • Override SetForegroundColour and SetBackgroundColour in MaskedEditMixin (#808)
  • Add an explicit wx.GraphicsContext.Create overload for wx.AutoBufferedPaintDC. (#783)
  • Return original AGW window style in AuiToolBar.GetAGWWindowStyleFlag. (#870)
  • Fix a bug in group management on wx.lib.masked.numctrl; the previous code used truediv ('/') to calculate _groupSpace, but in python 3.x this leads to a float result, instead of an integer as was expected. Using floordiv ('//') instead to solve the problem. (#865)
  • Hide the window when the tool does not fit into AuiToolBar. (#872)
  • Fixed the virtual dispatch code for the PGEditor.GetValueFromControl method to properly pass the parameters to the Python implementation, and also fixed how the return value is handled. (#742)
  • Fixed all implementations of the PGProperty.StringToValue and IntToValue methods to treat the value parameter as a return value. (#742)
  • Add missing wx.adv.EVT_CALENDAR_WEEK_CLICKED (#875)
  • Fixed the stock labels to conform to Windows design guidelines. (#787)
  • Always reset floating size and style when floating a toolbar in agw.aui. (#880)

New in wxPython 4.0.1.0 (Feb 3, 2018)

  • This release is a quick hot-fix of some issues discovered in 4.0.0 just after the release, plus a bit of low-hanging fruit that was easy to squeeze in too. Changes in this release include the following:
  • A fix for a segfault that happens upon startup on newer linux releases. (#648)
  • Set LD_RUN_PATH for the wxWidgets part of the build so the wx libs that are loaded by other wx libs can be found successfully. (#723)
  • Use wxApp::GetInstance to check if there is an existing wxApp object. (#720)

New in wxPython 4.0.0.0 (Feb 1, 2018)

  • Changes in this release include the following:
  • Fixes in wx.aui to properly transfer ownership of the menubar, and also some tweaks in the AUI_MDI sample in the demo. (#540)
  • Added a wx.BUILD_TYPE value to distinguish between development, snapshot, and release builds. The value is also appended to wx.PlatformInfo. (Thanks Mesalu!)
  • Fix crash when trying to fetch multiple items from a composite data object in wx.DropTarget.OnData. (#550) Also fixed the CustomDragAndDrop sample to not fail on Python 2.7.
  • Add ability for wxArray wrappers to return a copy of the item in the __getitem__ method. This solves problems where an array that is the return value of some method call is indexed immediately and a reference to the array is not held, which could result in garbage values for the indexed item. Currently this is turned on for just GridCellCoordsArray, but others can be switched in the future if needed. (#297)
  • Add missing wx.GetLocale function. (#572)
  • Add methods to wx.TextCtrl for output "file-like" compatibility. (#578)
  • Fix object ownership issue for menus added to toolbar items. (#580)
  • Updated SIP to version 4.19.5. One of the new features of this version is that integer overflows are no longer silently truncated and ignored. In other words, if a wrapped API has a parameter that is a C int type, and you pass a value that is larger than what will fit in that type of integer then an OverflowError exception will be raised.
  • Fixed wx.richtext.RichTextBuffer.GetExtWildcard to return a tuple of 2 values, as was done in Classic. (#594)
  • Various fixes in UltimateListCtrl, HyperTreeList and CheckListCtrlMixin. (#592, #349, #612)
  • Fixes in TextEditMixin to ensure that the new value is passed in the event. (#605)
  • Fix comparing DataViewItem and TreeListItem objects with None. (#595)
  • Fix event type name in wx/lib/sheet.py (#613)
  • The wx.MessageDialog methods which take ButtonLabel parameters are now able to accept either strings or stock IDs. (#607, #276)
  • Fix wx.EvtHandler.Unbind to work correctly when specifying the handler and it is a bound method. (#624)
  • Fix OGL's ShapeCanvas to draw properly when the window is scrolled, and to also adjust the mouse coordinates, etc. (#635)
  • Set a default background color for the generic buttons. (#651)
  • Fixed HtmlWindow's OnFoo virtual methods so calls to them are propagated to the Python class. (#642)
  • Fixed wx.CallLater to explicitly hold a reference instead of depending on an uncollectable cycle to keep the instance around. Like before the cycle is broken and the saved reference is deleted after the timer expires and the callable has been called. (#457)
  • Although it's more or less just an implementation detail, add wrappers for wx.aui.AuiTabCtrl so references to it will get the correct type. (#664)
  • List-like wrapper classes generated for accessing wxLists and wxArrays now support reverse indexing. (#669) For example:
  • child = panel.GetChildren()[-1]
  • Ported some of the classes in Classic's gizmos module from C++ to Python, including LEDNumberCtrl, DynamicSashWindow, and TreeListCtrl. The classes are now located in the wx.lib.gizmos package, with a compatibility module at the old wx.gizmos location. Please note that this TreeListCtrl class is a very different implementation than wx.dataview.TreeListCtrl, although there is some overlap in purpose. In addition, the new TreeListCtrl class is not actually a port from the old gizmos.TreeListCtrl but rather just a thin layer around AGW's HyperTreeList. This means that if you are using a non- default style flag you'll need to pass it to the agwStyle parameter instead of the style parameter.
  • Fix crash when deleting all wx.dataview.TreeListCtrl items with wxGTK3. (#679, #704)
  • Fix displaying '&' in the label of wx.RadioBox on GTK. (#39)
  • Fix problems of the wrong C++ method being called in wx.ProgressDialog on MS Windows. (#701)
  • Fixed how the scrollbar events are captured in DynamicSashWindow in order to fix regression in the sample. (#687)
  • Allow extra CLI args to be passed to build.py by setting WXPYTHON_BUILD_ARGS in the environment.
  • Added context manager methods to wx.DC that explicitly destroys the C++ part of the DC upon exit. Using DCs as context managers is not required, but can be handy in the rare cases where something holds on to a DC for too long, perhaps unintentionally. (#680)
  • Fixed crash due to too aggressive management of wxModules when we load subordinate extensions that have their own wxModules (wx.html, wx.adv, etc.) (#688)
  • Fixed StyledTextCtrl.MarkerDefineRGBAImage and RegisterRGBAImage methods to be able to accept any Python buffer compatible object for the pixel data. (#716)

New in wxPython 3.0.2.0 (Nov 29, 2014)

  • Fixed wxPython bug on OSX that was preventing the wx.App's virtual methods related to handling App Events, like open-files or reopen-app, from being handled correctly.
  • NOTE: It appears that wxPython applications on OSX will now always be getting an initial Apple Event(s) sent to MacOpenFiles coresponding to the name of the script and args on the python command-line.
  • Added patch #15142 which adds support for building with and using GTK3 as the wx platform. Thanks kosenko!
  • Fixed the OSX Carbon build to actually use Carbon. (Because of a change in defaults it was actually building the Cocoa build instead.)
  • Pythonized DataViewCtrl.HitTest. It now takes just the Point parameter and returns the DataViewItem and DataViewColumn objects. If there is no item at that point then item will evaluate to False, (or you can use its IsOk method.) For example:
  • item, col = ctrl.HitTest(point)
  • if item:
  • doSomething(item, col)

New in wxPython 3.0.1.1 (Sep 11, 2014)

  • The previous release managed to escape out into the wild before the 3rdPart addons were updated from the source repository. This release includes the newest code from AGW and FloatCanvas which should have been in the last release.
  • Fixed "wxPyHtmlWinTagHandler, no destructor found." error.

New in wxPython 3.0.0.0 (Dec 30, 2013)

  • No new features but lots of bug fixes in wxWidgets

New in wxPython 2.9.5.0 (Oct 30, 2013)

  • wx.media.MediaCtrl on OSX-cocoa now has a functioning back-end using the QTKit framework, so it works when running in either 32-bit or 64-bit mode.
  • Printing triggered from a Javascript window.print() statement will now work on OSX when using the old wx.webkit or the new wx.html2 browser controls.
  • Updated Scintilla code to verison 3.21
  • Lots of fixes and improvements in the wxWidgets code.
  • Changed the wx.DateTime.Parse* methods to work like they did in wxPython 2.8, they now return an integer indicating how far in to the string that the parser parsed, or -1 on error.
  • Updated wx.lib.pdfviewer with patches from David Hughes.

New in wxPython 2.9.4.1 (Oct 30, 2013)

  • A quick patch release to fix some C++ headers for the wxGTK port not getting installed, causing a build error in wxPython.

New in wxPython 2.9.4.0 (Jul 30, 2012)

  • wx.lib.pubsub: Pusub now defaults to the new "kwarg" version of the API. In order to continue using the original "arg1" API you will need to import wx.lib.pubsub.setuparg1 before importing any other pubsub modules. The wx.RA_USE_CHECKBOX and wx.RB_USE_CHECKBOX constants were removed. They were only used by the incomplete PalmOS port which has been removed from the wxWidgets source tree. wx.Font: There is now GetStrikethrough and SetStrikethrough methods.
  • wx.StaticBox: Fixed the client origin and client size on MSW so children of the static box should not overlap the box's label or border lines.
  • Added wx.HTMLDataObject Applied a patch from Sam Partington that fixes some threading issues in the wrapper code and other cool stuff. Added the missing wx/lib/agw/data dir to the installers.
  • Add wx.EnhMetaFile and wx.EnhMetaFileDC for MSW. This DC type is what is used by the print framework in the print preview window, so it needed to be wrapped so self.GetDC() would work properly.

New in wxPython 2.9.3.1 (Jan 3, 2012)

  • Corrected some problems in the installer scripts that were not including some new files.
  • Re-enabled the wrappers for the wx.GenericDatePickerCtrl class.
  • Applied some patches from Werner Bruhin for the sized controls classes and demo, and which also adds the SizedScrolledPanel class.
  • Fixed several other minor bugs discovered in the last release.

New in wxPython 2.9.3.0 (Dec 29, 2011)

  • wx.ListCtrl: Added a static method named HasColumnOrderSupport which returns a boolen value indicating if the column ordering APIs (see next item) are implemented for the current platform.
  • Added methods for querying and manipulating the ordering of the columns (in wx.LC_REPORT mode only.) This is not implemented on all platforms so use HasColumnOrderSupport to find out if the APIs are supported.
  • The new APIs are: GetColumnOrder, GetColumnIndexFromOrder, GetColumnsOrder and SetColumnsOrder.
  • Added wrappers for new WebView classes which came from a successful Google Summer of Code project this year. This new module allows you to embed the platform's native HTML/CSS/Javascript rendering engine in a wx application like we've always been able to do with wx.webkit on Mac or with the various ActiveX modules that we've had for windows, except in the new version it uses the exact same API on all platforms and also provides an implementation for GTK. Currently on Windows the IE Trident engine is used, and WebKit is used on OSX and GTK. The code is organized to eventually allow alternate backend renderer implementations. The GTK version requires at least version 1.3.1 of libwebkitgtk-dev, which is the default on most of the recent Linux distributions.
  • Please note that although these new classes and libraries are using names based on "WebView" I have put the wxPython verison of them in the wx.html2 module because the wxWebKit project already produces a wx.webview module for wxPython.
  • The wx.lib.pubsub package has been updated to the latest verison and several examples have been added to the samples folder.

New in wxPython 2.9.2.4 (Sep 10, 2011)

  • Fixed an indentation bug that crept in somewhere along the way.

New in wxPython 2.9.2.3 (Sep 9, 2011)

  • Fixed a bug that was causing the base class methods of wx.richtext.RichTextCtrl to be called incorrectly, causing a crash.

New in wxPython 2.9.2.2 (Sep 7, 2011)

  • Fixed a problem with wx.ListCtrl.InsertStringItem when an imageIndex
  • was not passed. Change the listctrl to not always assume that there
  • is an image.
  • Several fixes for the wx.lib.agw modules.
  • Fixed a problem in wxGrid on OSX-cocoa where it would close the cell
  • editor immediately because of extra kill focus events.
  • Added an OSX implementation for the wxRegion constructor taking a
  • sequence of points.
  • Added the ability to use the Cairo backend for wx.GraphicsContext on
  • Windows. The Cairo libraries are loaded dynamically on-demand, so
  • there is not a runtime dependency on Cairo for applications that do
  • not use it. The Cairo DLL and its dependencies are bundled with the
  • wxPython installers. We expect to be able to also add dynamic loading
  • of Cairo for OSX soon, (but if anybody would like to volunteer that
  • would be nice too.) To create a Cairo graphics context you first
  • have to get the Cairo GraphicsRenderer and then use it to create the
  • context, like this::
  • cr = wx.GraphicsRenderer.GetCairoRenderer()
  • ctx = cr.CreateContext(dc)
  • If either GetCairoRenderer or CreateContext fails (either it's not
  • supported or the Cairo shared libraries can not be found) then None
  • will be returned, so be sure to check the return values. Using Cairo
  • on Windows is usually faster and seems to be of better quality than
  • using the GDI+ backend.
  • The wx.GCDC class can now be constructed with an already exisiting
  • wx.GraphicsContext.
  • The wx.lib.softwareupdate module has been added. It implements a
  • class designed to be mixed with wx.App in a derived class and provides
  • code for enabling your applications to update themselves when new
  • releases are made available (very similar to how most applications on
  • the Mac will prompt you to allow it to self-update.) This is based on
  • the Esky library available from the Python package index at
  • http://pypi.python.org/pypi/esky. To enable your application to be
  • self-updatable it must be packaged as an Esky bundle, which is a .zip
  • file with a certain structure and meta-data, which means that you will
  • have to modify your setup.py files to enable this. There is an
  • example showing how to do this in the samples/doodle folder of the
  • wxPython source tarball or the docs and demos package.
  • Added a MultiMessageDialog class to wx.lib.dialogs that is similar to
  • the stock wx.MessageDialog, but is additionally able to have a
  • scrollable message area, custom icons, and customized button labels,
  • (although they will still use the stock IDs). There is also a
  • MultiMessageBox Function that is like the wx.MessageBox function.

New in wxPython 2.9.2.1 (Sep 7, 2011)

  • Just before release of 2.9.2.0 an important bug was discovered in the
  • wxMSW printing code related to converting to and from native printer
  • definitions. To correct that glitch this .1 release was made with just
  • that one additional difference from the official wxWidgets 2.9.2
  • source tree.

New in wxPython 2.9.2.0 (Sep 7, 2011)

  • Added wx.CommandLinkButton. This button has both a label and a note
  • displayed on it. On Windows 7 it is a new native widget type, on the
  • other platforms it is a generic implementation using wx.Button.
  • Added wx.lib.itemspicker. This class allows items to be selected from
  • a list by moving them to another list.
  • Added wx.UIActionSimulator, which is able to programatically generate
  • platform specific keyboard and mouse events, (with varying degrees of
  • success depending on the platform.)
  • Added the ability to the build tools to make a Mac Framework for
  • wxWidgets, and use it in the wxPython build. (We're still ironing out
  • some issues so it's not part of the release builds yet.)
  • Added an installer EXE for the wxWidgets source tree, including the
  • LIBs and DLLs that were used for the wxPython build on Windows. This
  • enables 3rd party extension developers to build their libraries and
  • extensions such that they will use the same options and the same libs
  • as wxPython, and will replace the -devel tarball included with prior
  • releases.
  • There have been many improvements to the wxOSX-Cocoa port, making it
  • a more usable port. The other ports have also improved as well.
  • The wx.TaskBarIcon in the wxOSX-cocoa port can now either be a custom
  • dock icon as before, or a status icon in the menu bar, and can be
  • selected by passing wx.TBI_DOCK or wx.TBI_CUSTOM_STATUSITEM to the
  • wx.TaskBarIcon constructor. The default is menubar status item. The
  • type flag is ignored on the other ports.
  • wx.ToggleButtons are now part of the new common button class hierarchy
  • and so they can now have bitmaps instead of or in addition to their
  • text labels.
  • Udpates from the AGW and Editra projects.

New in wxPython 2.9.1.1 (Sep 7, 2011)

  • wx.Bitmap: Add ConvertToDisabled method.
  • wx.AboutBox: Added support for setting a long version string in
  • addition to the normal version string.
  • wx.App: Add ScheduleForDestruction, which will allow you to cause a
  • window to be destroyed sometime in the near future. (Most likely to
  • be used to ensure that there are no more envents pending for the
  • widget.)
  • More methods and properties moved from wx.MouseEvent to the
  • wx.MouseState base class. Same for wx.KeyEvent and wx.KeyboardState,
  • which is used to hold modifier key states, and which is also a base
  • class of wx.MouseState. Note that properties rightDown, leftDown and
  • middleDown have been changed to rightIsDown, leftIsDown and
  • middleIsDown.
  • wx.Button can now have both a text and a bitmap label (or just one or
  • the other.) wx.BitmapButton is pretty much redundant and will likely
  • be phased out sometime in the future. (The OSX Carbon build does not
  • support this new feature, but the Cocoa build does.)
  • wx.ComboBox: Added Popup and Dismiss methods for programatically
  • showing and hiding the popup, although they are not implemented for
  • all platforms yet.
  • wx.GenericDirCtrl can now select multiple paths.
  • Removed the deprecated wx.Effects class.
  • wx.Image: Added ConvertToGreyscale and ConvertToDisabled methods, also
  • new resampling scaling methods.
  • wx.Toolbar now supports inserting stretchable space between tools.
  • wx.Dialog can now be Window-modal or the usual App-modal. On Mac this
  • results in the dialog sliding down in a sheet from the parent window's
  • top edge. For platforms that don't support Window-modal dialogs it
  • will fall back to an App-modal behavior. See
  • wx.Dialog.ShowWindowModal and the wx.Dialog sample in the demo.
  • wx.wizard.Wizard: Add a new EVT_WIZARD_PAGE_SHOWN event.
  • Added wx.InfoBar, which is similar to the message bar used in some web
  • browser windows that is shown above or below the content window to
  • display messages and/or buttons in a way that doesn't interupt the
  • user's workflow like a modal message dialog does, but is much more
  • noticeble than simply putting some text in the status bar.
  • Updated the Scintilla code used by wxStyledTextCtrl to version 2.03.
  • Added wx.GraphicsGradientStop[s] classes and updated the
  • Create*GradientBrush APIs to allow gradients with more than two color
  • stops. Similar changes were also mare to the Cairo specific classes in
  • wx.lib.graphics to help maintain compatibility between the two.
  • Added the wx.lib.pdfviewer package which is a contribution from David
  • Hughes. It implements a simple cross-platform PDF viewer widget using
  • the 3rd party pyPdf package for parseing the PDF file. It's not super
  • fast nor is it feature complete, but for simple and small PDF files
  • (such as those produced by ReportLab) it works well.
  • Probably the most notable change in this release is the addition of
  • the OSX-Cocoa build, including a 64-bit architecture in the fat
  • binaries. The Cocoa port requires at least OSX 10.5, and the Carbon
  • port requires 10.4 or better. There are still some rough edges in the
  • Cocoa port, but a lot does work and works well. If you run into
  • issues that seem to be Cocoa specific then be sure to create tickets
  • for them at http://trac.wxwidgets.org with the component set to
  • wxOSX-Cocoa, after having searched for any existing tickets for the
  • same issue of course.

New in wxPython 2.8.12.1 (Sep 7, 2011)

  • Relax an assert that was added to Bind() in the previous release so
  • None will be an acceptable value for the handler parameter again.
  • Added ToolTipString property to wx.Window.
  • Other minor fixes.
  • Udpates from the AGW and Editra projects.

New in wxPython 2.8.12.0 (Sep 7, 2011)

  • This release is mostly just bug and typo fixes. There are no new
  • major features or enhancements in the core library.

New in wxPython 2.8.11.0 (Sep 7, 2011)

  • Lots of bug fixes in both wxWidgets and wxPython.
  • Added the context manager protocol methods to some wx classes so they
  • can be used with the new Python 'with' statement. (The with statement
  • is always available starting in Python 2.6, and can also be used in
  • Python 2.5 with a __future__ import statement.) There are several
  • wx classes where this is a natural fit, such as wx.BusyInfo. The
  • __enter__ and __exit__ methods have also been added to wx.Dialog where
  • it will do the dialog.Destroy() call for you. This means that you can
  • use code like this::
  • with MyDialog(self, foo, bar) as dlg:
  • if dlg.ShowModal() == wx.ID_OK:
  • # do something with dlg values
  • The list of wx classes that can now be used as context managers is:
  • * wx.Dialog
  • * wx.BusyInfo
  • * wx.BusyCursor
  • * wx.WindowDisabler
  • * wx.LogNull
  • * wx.DCTextColourChanger
  • * wx.DCPenChanger
  • * wx.DCBrushChanger
  • * wx.DCClipper
  • A new class has been added that is also a context manager, called
  • wx.FrozenWindow. It will freeze the window passed to it upon entry to
  • the context, and will thaw the window upon exit from the context.
  • Applied the final version of patch #10959 to the PyCrust code. It
  • adds many enhancements to the Py suite, inlcuding the ability to edit
  • blocks of code (called slices) as a whole before executing them, and
  • also the ability to execute some simple shell commands.
  • Replaced the wx.lib.pubsub module with the new pubsub package from
  • http://pubsub.sf.net. By default it is backwards compatible with the
  • old pubsub module, but it also has a more advanced API available that
  • can be switched on at import time. See the pubsub web site for more
  • details.
  • The wx.Effects class is deprecated.
  • Added Python 2.7 builds for Windows and Mac.
  • Added Debian package builds for Ubuntu 9.10 and 10.4.
  • Many fixes and enhancements for the wx.lib.agw pacakge, including the
  • addition of pybusyinfo, ribbon, ultimatelistctrl and zoombar.

New in wxPython 2.8.10.1 (Sep 7, 2011)

  • wx.grid.Grid: Added methods CalcRowLabelsExposed,
  • CalcColLabelsExposed, CalcCellsExposed, DrawRowLabels, DrawRowLabel,
  • DrawColLabels, and DrawColLabel to the Grid class.
  • Added the wx.lib.mixins.gridlabelrenderer module. It enables the use
  • of label renderers for Grids that work like the cell renderers do. See
  • the demo for a simple sample.
  • Solved the manifests problem with Python 2.6 on Windows. wxPython now
  • programatically creates its own activation context and loads a
  • manifest in that context that specifies the use of the themable common
  • controls on Windows XP and beyond. This also means that the external
  • manifest files are no longer needed for the other versions of Python.
  • wx.Colour: Updated the wx.Colour typemaps and also the wx.NamedColour
  • constructor to optionally allow an alpha value to be passed in the
  • color string, using these syntaxes: "#RRGGBBAA" or "ColourName:AA"
  • wx.lib.wxcairo: Fixed a problem resulting from PyCairo changing the
  • layout of their C API structure in a non-binary compatible way. The
  • new wx.lib.wxcairo is known to now work with PyCairo 1.6.4 and 1.8.4,
  • and new binaries for Windows are available online at
  • http://wxpython.org/cairo/

New in wxPython 2.8.9.2 (Sep 7, 2011)

  • Added the wx.lib.agw package, which contiains most of the widgets from
  • http://xoomer.alice.it/infinity77/main/freeware.html written by Andrea
  • Gavana. Andrea's widgets that were already in wx.lib were also moved
  • to the wx.lib.agw package, with a small stub module left in wx.lib.
  • As part of this addition the demo framework was given the ability to
  • load demo modules from a sub-folder of the demo directory, to make it
  • easier to maintain collections of demo samples as a group.
  • Added the wx.PyPickerBase class which can be used to derive new picker
  • classes in Python. Used it to implement a color picker for Mac that
  • uses a wx.BitmapButton instead of a normal wx.Button. This makes the
  • color picker look and behave lots better on Mac than before.
  • You can now pass the handler function to the Unbind method. If it is
  • given then Unbind will only disconenct the event handler that uses the
  • same handler function, so if there are multiple bindings for the same
  • event type you'll now be able to selectively unbind specific
  • instances.
  • Added a new tool to the Widget Inspection Tool that allows you to watch
  • the events passing through a widget. It can also be used
  • independently, see wx.lib.eventwatcher.