My personal preference is wxPython but you might also like to take a look at Kivy but I am less familiar with the latter.
A lot of people go with one of the bindings the QT framework but if you are planning on commercial use I would say avoid it like the plague as the licencing for the core library which you need even if the bindings are open source are a nightmare with high, annual, per dev seat, licenses required if you are looking at any commercial applications.
To take the points one at a time:
Must be:
- cross platform:
- Windows wxPython & Kivy = Yes
- Linux wxPython & Kivy = Yes
- Android Kivy = Yes, wxPython No
- iOs Kivy = Yes, wxPython No at least at the moment
- Mac wxPython & Kivy = Yes
- plays well with Leaflet mapping: wxPython = Yes, Kivy = Maybe
Nice to have
- runs in the browser too - As far as I know neither currently runs in browser.
- free for commercial use - wxPython & Kivy = Yes
- good documentation, forums, code samples, tutorials, Udemy, etc - wxPython Yes, Kivy Somewhat less so in my opinion,
- drag & drop GUI designer - for wxPython there is wxGlade, wxFormBuilder and a few others, I am not sure what there is for Kivy.
Other considerations:
- wxPython - mature, lots of support, books, etc. Native look & feel on each platform, also provides wrappers for a number of utility classes
- Kivy - Modern, new, kivy look & feel
I would encourage people to use virtual environments to test the demos for each out to see which you like & meets your needs.
Another thing that you might wish to look at is Gooey - if your existing code is argparse based and you opt for wxPython then Gooey can give you an initial GUI by adding just 2 lines of code (one being the import)!
Instructions for installing each including the demos
- Kivy has instructions here
- For wxPython
python -mpip install wxPython
will also install wxDemo and wxDocs utilities to download (if needed), unpack (if needed) and run the demo or show the docs.
Some screenshots
wxDemo
Opening Screen
wx.Slider
TextCtrl
Kivy Showcase
Opening Screen
Sliders
TextInputs
Disclaimer
Please note that the above is my opinion and I may be slightly biased to wxPython rather than Kivy as I have been using the former for years and I have had a couple of minor code contributions accepted.