IMPORTANT MILESTONE REACHED: wxPython 4 makes the cut to master/alpha snapshots and beyond, Project Heliopolis development phase is finished


Dear NVDA Community:


Please circulate the following notice throughout the community (including to translators, other users, add-on authors and beyond), as it’ll affect EVERYONE:


I’m delighted to announce that, as of July 18, 2018, wxPython 4 officially comes to NVDA! This means, going forward, wxPython 4 code will be in use throughout NVDA (alpha, future betas, future stable releases and so on). Note that unless really serious regressions occur, wxPython 4 will be here to stay.


Relevant pull request can be found at:


Depending on who you are, please do one or more of the following:


For users and testers:

  1. If you wish to find out what wxPython 4 “feels” like, take a look at alpha snapshots.
  2. Please take note of advisories issued by add-on authors and others once a stable version with wxPython 4 ships.
  3. Please provide feedback if you find problems with wxPython 4 and NVDA.


For add-on authors and reviewers:

  1. If your add-on uses functions/classes/variables from wxPython, be sure to test your add-on and write code that is compatible with wxPython 4 (and/or wxPython
  2. For Remote Support add-on: I’ll take my hotfix version down the day add-on authors release an official hotfix.
  3. For add-ons I am (or I’ll be) reviewing: I’ll start commenting on compatibility issues with wxPython 4 starting on September 1, 2018.


For third-party Core developers (outside of NV Access):

  1. If your pull request relies on materials from wxPython and/or GUI, I advise merging in latest master before working on them further in hopes of reducing conflicts.
  2. In case conflicts do arise after merging master, please resolve them before working on your pull request.


P.S. Some might be wondering what “Project Heliopolis” is:


According to various legends, a phoenix is a mythical bird that can live for hundreds of years and can be reborn from ashes of its former body when it burns. Other legends state that the young phoenix would fly to Heliopolis (Greek for “sun city”) where it’ll bury the ashes of its former self encased in an egg. This became the inspiration for wxPython Phoenix (version 4), which, according to its developer, is an effort to rewrite this GUI toolkit to make it better.


The Heliopolis project makes a nod to wxPython Phoenix by porting NVDA’s GUI subsystem and others to wxPython 4. This began in 2015 when I first ported NVDA to wxPython Phoenix code base with some difficulties. In 2016, I resurrected this project but met various difficulties while doing more work in summer of 2016.


Then in April 2017, wxPython 4 alpha hit the air, which gave me and others a chance to experiment with more stable version of the Phoenix code base. For the most part, prior work in 2015 and 2016 paid off, as NVDA ran almost flawlessly under wxPython 4. The big major problem was wx.Yield function, which was solved by defining a non-reentrant timer in GUI module in 2018. In March 2018, wxPython 4 made its debut in the NVDA community in the form of a series of what is now former next branch snapshots, and this opened up bugs with add-ons that were addressed in most cases.


With wxPython 4 merged (finally) into master, I can declare that we have achieved two milestones: moving onto wxPython Phoenix (thus accomplishing the original goal of Heliopolis project), and moving closer to the “big switch”: Python 3. For many of you, what you saw with wxPython 4 switch is (and will be) just a taste of what’s to come once the NVDA screen reader finally transitions to Python 3 (preferably 3.7). Also, on a personal note, I can finally sleep in peace (a bit more peacefully) after seeing the fruition of a project I’ve been championing since 2015.


I’d like to take this time to thank everyone who was involved with wxPython 4 transition: NV Access, Robin Dunn (wxPython developer), Leonard (Babbage) and many others.


Enjoy wxPython 4.



P.S. By the way, we get the “six” module for free with this milestone.

Join to automatically receive all group messages.