
WxPython 4.0.0 Released - mariuz
https://www.wxpython.org/news/wxpython-4.0.0-release/index.html
======
mch82
How come documentation for "embedded" GUI frameworks like wxPython is so
devoid of screenshots and graphical explanation?

Compare these pages...

* Overview, [https://www.wxpython.org/pages/overview/](https://www.wxpython.org/pages/overview/)

* API, [https://docs.wxpython.org/](https://docs.wxpython.org/)

* Demo, [https://wiki.wxpython.org/WxSmallApp](https://wiki.wxpython.org/WxSmallApp)

...with these pages for Bootstrap:

* Overview, [http://getbootstrap.com/](http://getbootstrap.com/)

* API docs, [http://getbootstrap.com/docs/4.0/getting-started/introductio...](http://getbootstrap.com/docs/4.0/getting-started/introduction/)

* Demo, [http://getbootstrap.com/docs/4.0/examples/](http://getbootstrap.com/docs/4.0/examples/)

For me, this difference made web UI frameworks much more approachable. Visual
widget catalogs simplify the task of finding widgets or code samples. Widget
screen shots help determine if code is performing as expected.

~~~
ornitorrincos
because the list of widgets with screenshots are the same as wxwidgets which
is in here:
[http://docs.wxwidgets.org/trunk/page_screenshots.html](http://docs.wxwidgets.org/trunk/page_screenshots.html)

~~~
TheCoreh
Sadly, the screenshots on that page seem to have been last updated when
Windows XP was still current (which was 10+ years ago)

They're also not HiDPI/Retina, and the whole website design seems to be stuck
in the mid-2000s, too. Somehow mobile and web developers got aboard all the
new design and interaction trends, but Desktop GUI frameworks seem to be all
stuck 10 years behind.

If I had to guess, I'd say it's probably because of a lack of capital
investment in desktop software.

And yet a lot of people don't understand why everyone is using Electron for
desktop apps these days.

~~~
ptx
> Somehow mobile and web developers got aboard all the new design and
> interaction trends

Because the new design trends are all about how to adapt to the limitations
(and possibilities) of mobile and web. For desktop applications these mobile-
first designs don't work very well (see Windows 8) and we already had long-
established design patterns that do.

------
Cynox
Great work! Finally a stable version working with Python3!

I find wxPython highly productive and enjoyable to work with and the wx C++
documentation has always been outstanding. Now the Python docs are also really
good! [https://docs.wxpython.org/](https://docs.wxpython.org/)

I know that Qt gets most of the publicity, but personally I prefer wx (having
written huge applications in wx and only a small one in Qt, but still). Being
able to .Bind() anything without sub-classing and the fact that the class
constructors normally takes sensible parameters so that no further method
calls are needed to set up a widget makes it very fast and compact to generate
dynamic UIs with readable code.

The work Robin Dunn has done with wxPython is simply massive and he should be
known as one of the great open source legends, especially in the Python
community! Congratulations on a fantastic release!

------
zwieback
I used (and liked) wx in the nineties - didn't know it was still around.

Qt is my goto GUI for Python these days, does anyone have experience with wx
vs Qt for Python? The samples look like it's all dynamically generated (vs.
something like QtDesigner) and that's how we used it way back when.

~~~
cabalamat
My "go to GUI" is a web app -- I can't imagine anything I'd write a GUI app
for these days.

~~~
IgorPartola
Text editor, video, audio editor, system widgets and settings, web browser,
terminal emulator, git GUI client, crypto coin wallet, chat client, games,
document editor, security focused software a la Keybase client.

~~~
sfifs
the point is HTML5/CSS/JS nowadays provides superior UI experience to
traditional UI frameworks. In many of the categories above, there are
electron/webview based applications that's very popular.

Text editor, document editor -> VS Code/Atom

terminal emulator -> Google's terminal emulator

git GUI client -> GitHub client is electron based

chat client -> slack is electron based

games -> lots of web based

~~~
zwieback
Also, GUI toolkits were never fun or easy to use in desktop development. I've
used MFC, wx and Qt with C++, Forms and WPF with C# and Qt with Python. All of
those had their challenges so browser-based GUIs don't seem so bad as an
alternative. Not a fan of JS but modern toolkits are almost at a point where
they hide enough of the ugliness.

~~~
markroseman
Never? Dude, Tk back in the day! Compared with all the raw X11 predecessors,
it was a revelation for Unix GUI's.

~~~
zwieback
True - Tk was quite the step up back then. I still use it every day when I
fire up gitk or git gui.

------
michaelmcmillan
Seems like the site is down. Here is a cached version:

[https://webcache.googleusercontent.com/search?q=cache:ght2vB...](https://webcache.googleusercontent.com/search?q=cache:ght2vBmKuEsJ:https://www.wxpython.org/news/wxpython-4.0.0-release/index.html+&cd=3&hl=en&ct=clnk&gl=no&client=ubuntu)

------
ZuLuuuuuu
Does wxWidgets provide any declaration based reactive programming with data
binding? Something like WPF/XAML or Qt/QML or any modern web framework
provides? Once you use a modern GUI framework with reactive programming
capabilities, it is hard to go back to writing the code line by line
procedurally to create your GUI and to keep the information on screen up-to-
date without using reactive elements.

------
Karunamon
This brought a couple of app ideas back to the front of my mind, but also the
difficulties involved in shipping a Python app to an end user. Requiring the
user to care about the right version of the runtime, their python and library
path, etc. is a real pain in the ass for all concerned.

Are there any Python projects out there that allow you to ship a "binary"
(even if it's just a self contained python with the relevant libraries like
WxPython brought in) for people to use?

~~~
Tom4hawk
Yes - cx_Freeze. Nice example is Cura application:
[https://github.com/Ultimaker/cura-
build/tree/master/packagin...](https://github.com/Ultimaker/cura-
build/tree/master/packaging) (hint: .in files)

They are shipping Python 3.5.2 + required PyQT5 parts + other python
libraries. Only Python files visible for users are in plugins folder (rest are
bundled[as pyc-s] in single zip file, python interpreter is "merged" with
entry *.py file as an executable).

You can easily download Cura from Ultimaker site and "inspect" result yourself
;)

------
therealmarv
I wonder if it makes more sense e.g. for macOS to create a Swift UI and an
existing python code base as external process which is called on request.

Does somebody knows which API interface specification is most suitable for
that kind of communication on a single PC: Swift <-> Python ? For web it easy
(e.g. REST) but there has to be other options on a fully controllable code
base on your PC (seems my desktop programming days are long gone.. otherwise I
would know myself)

~~~
Derbasti
Some kind of JSON over sockets (or MsgPack over pipes, BSON over ZMQ, etc.)
works pretty well for these kinds of scenarios.

------
dotdi
I always had the impression that WxWidgets is obsolete and dying. Nice to see
it still active.

Out of curiosity, any big or important software written in WxPython?

~~~
acidburnNSA
Not answering the real question but we have a lot of little wxPython GUIs
driving big engineering design software suites at the advanced nuclear design
company I work at. Engineers (mechanical, nuclear, etc.) can grasp it fairly
quickly, get their knobs on the screen, and be back to doing their mechanical
and nuclear engineering. We got started because the original python guy (me)
learned it from a grad student in 2005 via the excellent wx docs and demos
collection of examples. Works great and we recently went all Python 3.

~~~
dotdi
I realized it's a great tool for quick prototyping, especially internal
software, but I was wondering if anybody took it beyond that.

~~~
dagw
Not that I know of. Here is a list from the wxPython homepage:
[https://wiki.wxpython.org/wxPythonPit%20Apps](https://wiki.wxpython.org/wxPythonPit%20Apps)

As you can see much of the list is either 'toy' applications or older
applications that haven't been updated for ages.

~~~
bklaasen
Chandler is on that list! That's the failed PIM desktop software that Mitch
Kapor financed as a hobby project and which was the subject of the book
"Dreaming in Code"by Scott Rosenberg. Terrific book, shame about the software.

------
Kliment
Unfortunately they decided to pull all the 3.x versions from pypi/pip at the
same time, breaking a lot of projects that use pip to install dependencies but
haven't yet ported to the new wxpython. I don't really understand why anyone
would do that, but eh.

~~~
pishpash
2.9.1.1 is still here:
[https://pypi.python.org/pypi/wxPython/2.9.1.1](https://pypi.python.org/pypi/wxPython/2.9.1.1)

Wonder if they think 4.0 is compatible with 3.0?

~~~
jwilk
Note that there are no files for 2.9.1.1.

------
fermigier
Nice, but I find the release announcement a bit underwhelming. Which of the
seemingly minor fixes and tune-ups does warrant such a major version bump ?

~~~
jwilk
The announcement is misleading. These are changes since the previous beta
release (4.0.0b2), not since wxPython 3.0.

Full changelog:
[https://github.com/wxWidgets/Phoenix/blob/master/CHANGES.rst](https://github.com/wxWidgets/Phoenix/blob/master/CHANGES.rst)

Migration guide:
[https://docs.wxpython.org/MigrationGuide.html](https://docs.wxpython.org/MigrationGuide.html)

~~~
HankB99
Thank you. I was wondering the same thing.

I glanced at the information and, if I understand it correctly, 4.0.0 is the
first release of a ground up rewrite.

What's not immediately clear (and perhaps because I did not read the material
clearly enough) is if any significant features were added. I wonder because I
find it hard to rewrite something without taking advantage of the opportunity
to add features. Or perhaps the desire to add features that would be difficult
with the 3.x.x code drove the upgrade.

------
phkahler
Does this work with Python 3?

~~~
thekashifmalik
I believe so.

It is tested against Python 3 in their Travis config:
[https://github.com/wxWidgets/Phoenix/blob/master/.travis.yml](https://github.com/wxWidgets/Phoenix/blob/master/.travis.yml)

------
cafard
I haven't used it in a while, but found it comfortable enough. PythonCard
spoiled me a bit, though.

------
amelius
My biggest problem with wxpython is that you apparently can't set closures as
event handlers. Instead, you have to define a member function, and register
it. This makes the process a bit tedious compared to JavaScript.

~~~
ptx
The documentation seems to claim[1] otherwise:

    
    
      It also allows the direct binding of events to:
    
        * A handler method in the same or another object.
        * An ordinary function like a static method or a global function.
        * An arbitrary callable object.
    

If it works for arbitrary callable objects it should certainly work for
closures.

[1]
[https://docs.wxpython.org/events_overview.html](https://docs.wxpython.org/events_overview.html)

------
thekashifmalik
I think the site is down.

------
rectangletangle
I just woke up, and would have sworn the title read "Python 4 Released."

~~~
julienfr112
In view of the pace of python 3 adoption, it could be better to start right
now ...

