wxPython 4.0.4

Robin Dunn robin at alldunn.com
Sun Jan 6 17:40:48 EST 2019

Announcing wxPython 4.0.4

PyPI:   https://pypi.org/project/wxPython/4.0.4
Extras: https://extras.wxPython.org/wxPython4/extras/
Pip:    ``pip install wxPython==4.0.4``

Changes in this release include the following:

* Fixed an issue where wx.lib.intctrl would erroneously attempt to use
   long on Python3. (#898)

* Include the MSVC runtime DLLs for Python 3.7 builds too.

* Clear LIBPATH_PYEXT and LIB_PYEXT for linux builds too. (#904)

* Added a dependency on the Pillow package since it's used in some
   wx.lib.agw modules. (PR #908)

* Add flag to hide page in wx.lib.agw.aui.notebook. (#895)

* Switch wx.lib.plot to issue deprecation warnings with
   PlotPendingDeprecation so it doesn't have to enable all warnings to
   get them to be shown by default.  (#902)

* Added a Python 3.7 builder on Fedora 28. (#925)

* Fix the object ownership transfer for wx.Menu.Insert() (#931)

* Added wx.Treebook.GetTreeCtrl, wx.Listbook.GetListView and
   wx.Choicebook.GetChoiceCtrl. (#918)

* Removed the wx.BookCtrlBase.RemovePage workaround as it was causing
   problems and doesn't seem to be necessary any more. The existing
   wxWidgets assertions are catching the out of range error just fine,
   however if wxWidgets was built without the debug helpers turned on
   then it could still cause a crash. (#888)

* Reverted the changes which removed the content of the wx.lib.pubsub
   package and encouraged users to switch to the real PyPubSub package
   instead. Removing it caused more issues than were expected so it has
   been restored and the code updated to PyPubSub v3.3.0. Version 4.0.0
   is available upstream, but it is not compatible with Python
   2.7. Now, wx.lib.pubsub is actually deprecated instead of just
   trying to pass control over to the upstream PyPubSub library. (#932)

* Improve calltip stability in pyshell. (#941)

* Fix TypeError in wx.lib.throbber. (#924)

* Fix missing parameter tool_id in
   wx.lib.agw.ribbon.toolbar.RibbonToolBar.AddToggleTool. (#947)

* Add a step to wx.Config.ReadInt to attempt converting from long to
   int under python2. (#384)

* Add virtual behavior for wx.RichTextCtrl and wx.TextCtrl's
   Copy/Cut/Paste methods and their Can* counterparts. (#954)

* Fix IO type in wx.lib.agw.thumbnailctrl (#959)

* Fix type error that would occur using pycolourchooser. (#957)

* Optimize line drawing in HyperTreeList. (#973)

* Add wrapper for wx.StaticBox.GetBordersForSizer and use it in the
   demo to do platform-specific layout of the items in the
   StaticBox. (#974)

* Update wx.Point, wx.RealPoint, and wx.Size to use floating point
   arithmetic when conducting scalar multiplication (#971)

* Fix load/save bugs in PySlices (PR#978)

* Replace deprecated PIL.Image.tostring (PR#1005)

* Fix rendering and mouse sensitivity in UltimateListCtrl when adding
   HyperText items. (#1010)

* Added a parameter to lib.agw.CustomTreeCtrl.SetItemWindow(), to
   allow positioning the Window (a small image) on the left of text in
   a CustomTreeItem. (#PR886).

* Declared DeleteAllPages in the notebook subclasses, so the proper
   C++ implementation will be called. (#972)

* Removed wx.lib.floatbar, which has been deprecated forever and
   probably hasn't been working in nearly as long. (#976)

* Updated SIP to version 4.19.13.

* Fix an issue in wx.lib.agw.aui.AuiManager where the orientation of
   an AuiToolBar would not be updated when calling
   LoadPerspective. (#917)

* Fixed a bug in wx.FileSystemHandler.OpenFile where the object
   ownership was not being transferred correctly, causing a crash after
   a premature object deletion. (#926)

* Fixed wx.ListCtrl.Append when wx.LC_SORT style is used, so appending
   items out of order does not lose the data for the remaining
   columns. (#906)

* Add wx.Accessible, it's Windows-only, will raise a
   NotImplementedError exception on the other platforms. (#958)

* Added the ability to generate stub classes for use when optional
   wxWidgets features are not part of the build. So far, stubs are
   available for wx.Accessible, wx.FileSystemWatcher, wx.glcanvas,
   wx.media and wx.html2.

* Moved the wxpy_api.h file into the wx package at wx/include/wxPython
   so it will be included in the wheel file. (#961)

* Fixed how string data is added to a virtual file-like object in
   wx.MemoryFSHandler. All strings are now added to the file as utf-8
   encoded data, in both Python2 and Python3, and will be read from the
   virtual file the same way. If you need to use some other encoding
   for some reason you can first convert the text to a bytesarray or
   other buffer protocol compatible object and then create the virtual
   file from that data. (#969)

* Performance update for wx.lib.agw.customtreectrl (#1049)

* Ensure that colours set in wx.lib.agw.customtreectrl.TreeItemAttr
   are instances of wx.Colour. (#1032)

* Fix drawing of ticks in wx.lib.agw.speedmeter when there are
   negative bounds values. (#1013)

* wxWidgets for Mac includes the wxJoystick class now, also update the
   demo.  (#997)

* Fix wx.html.HtmlPrintout to not be seen as an abstract class, so it
   can be instantiated. (#1060)

* Fix wx.aui.AuiNotbook.SetArtProvider to properly transfer ownership
   of the art object from Python to C++. This possible double-deletion
   and related crashing problems. (#1061)

* Fixed the wrappers for wx.html.HtmlWindow.OnOpeningURL to properly
   handle the redirect output parameter. (#1068) This is a
   backwards-incompatible change, please see the Migration Guide for

* TabNavigatorWindow works similarly to other programs now. It's
   resizable and draggable so if user has tons of files with long names,
   it isn't an irritation anymore plastered right in the middle of the
   screen and can't be worked with easily and ESC now cancels the popup
   with a proper returnId. (#1096)

* Added missing methods in wx.ListBox, SetItemForegroundColour,
   SetItemBackgroundColour and SetItemFont. (#1095)

* Backported a fix in wxWidgets that avoids crashing in hhctrl.ocx
   when using context sensitive help in 64-bit builds on
   Windows. (#1104)

What is wxPython?

wxPython is a cross-platform 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 set of Python extension modules that
wrap the GUI components of the popular wxWidgets cross platform
library, which is written in C++. Supported platforms are Microsoft
Windows, Mac OS X and macOS, and Linux or other unix-like systems with
GTK2 or GTK3 libraries. In most cases the native widgets are used on
each platform to provide a 100% native look and feel for the

What is wxPython Phoenix?

wxPython's Project Phoenix is a new from-the-ground-up implementation
of wxPython, created with the intent of making wxPython “better,
stronger, faster than he was before.” In other words, this new
implementation is focused on improving speed, maintainability and
extensibility of wxPython, as well as removing most of the cruft that
had accumulated over the long life of Classic wxPython.

The project has been in development off and on, mostly behind the
scenes, for many years. For the past few years automated snapshot
builds have been available for those adventurous enough to try it, and
many people eventually started using the snapshots in their projects,
even for production releases.  While there are still some things on
the periphery that need to be completed, the core of the new wxPython
extension modules which wrap the wxWidgets code has been stable for a
long time now.

Due to some things being cleaned up, reorganized, simplified and
dehackified wxPython Phoenix is not completely backwards compatible
with wxPython Classic.  This is intended. In general, however, the API
differences tend to be minor and some applications can use Phoenix
with slight, or even with no modifications.  In some other cases the
correct way to do things was also available in Classic and it's only
the wrong way that has been removed from Phoenix.  For more
information there is a Migration Guide document available at:

The new wxPython API reference documentation, including all
Python-specific additions and customizations, and docs for the wx.lib
package, is located at: https://docs.wxpython.org/

Robin Dunn
Software Craftsman

More information about the Python-announce-list mailing list