Welcome to wxPython!

This website is all about wxPython, the cross-platform GUI toolkit for the Python language. With wxPython software developers can create truly native user interfaces for their Python applications, that run with little or no modifications on Windows, Macs and Linux or other unix-like systems.

Learn more

Latest News

wxPython 4.2.2 Released

wxPython 4.2.2 is now available at PyPI, with some additional files at Extras

Changes in this release:

  • This release was built using the wxWidgets' v3.2.6 release tag. This is the first release built using GitHub infrastructure instead of the buildbots. Please report any problems with the wheels.

  • Fix some Python 3.12 compatibility issues (segfault on exit) by upgrading sip & waf

  • Fix more float/int conversion issues in wx.lib classes (#2415, #2417, #2429, #2470, #2528, #2542)

  • Add initialValue argument to wx.lib.DirBrowseButton (#2430)

  • Fix wxImage.Clear() (#2433)

  • Fix blurry text in AuiNotebook tab (#2360)

  • Add support for frozen rows and columns to GridWithLabelRenderersMixin (#2436)

  • demo: ShortcutEditor: Fix broken call GetMenuBar() (#2412)

  • Add proper support for DataViewCheckIconTextRenderer (#2425)

  • Remove legacy macOS logic, use wx.SystemSettings to select colors (#2018)

  • Build: Use new tarfile.extractall() filter for safer tarfile extraction (#2443)

  • Fix typo in wx.lib.agw.persist_handlers (#2469)

  • Fix 'str' to 'wxString' converstation, when emoji is inside string (#2446)

  • Use unwrap before isbuiltin check (#2487)

  • Preserve pane icons when loading a perspective in agw.aui (#2494)

  • wx.agw.aui: don't uninitialize the AuiManager if the window close event is vetoed (#2460)

  • Pure python AUI: Make behavior in all platforms more equal (#2501)

  • wx.agw.aui. Do layout as the last step after all pane infos have recomputed their best sizes (#2500)

  • Fix additional SyntaxWarnings with Python 3.12 (#2502)

  • Fix wx.lib.agw.ribbon.RibbonButtonBar DeleteButton function (#2511)

  • UltimateListCtrl: Add support for ULC_AUTO_CHECK_PARENT (#2518)

  • Remove dependency on distutils (#2519)

  • Improve wx.lib.agw.FlatMenu memory usage (#2373)

  • Support NumPy 2.0 (#2580, 2591)

  • Fix EditLabel on CustomTreeCtrl doesn't automatically select the entire text (#2549)

  • Fix Widgets placed in the UltimateListControl are drawn in the wrong location (#2410)

  • Fix wx.lib.agw.aui sometimes shows "ghost" docking guide (#2364)

  • Fix Thumbnailctrl SetSelection raises exception if it tries to scroll (#2345)

wxPython 4.2.1 Released

"Size matters not." (Yoda)

wxPython 4.2.1 is now available at PyPI, with some additional files at Extras

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.

wxPython 4.2.0 Released

"Rumors of my death are only slightly exaggerated"

wxPython 4.2.0 is now available at PyPI, with some additional files at Extras

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

More news