WxPython 4.0.0 Released
wxpython.org
wxpython.org
Compare these pages...
* Overview, https://www.wxpython.org/pages/overview/
* API, https://docs.wxpython.org/
* Demo, https://wiki.wxpython.org/WxSmallApp
...with these pages for Bootstrap:
* Overview, http://getbootstrap.com/
* API docs, http://getbootstrap.com/docs/4.0/getting-started/introductio...
* Demo, 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.
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.
Either way, at least in my experience, I had to look up the C++ documentation because the Python binding documentation was never complete.
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.
I have been using wxpython on and off for last a few years, the nice thing is it gives a natural looks on each supported OS, so your application won't standout as odd/fancy/weird/off, as with some other cross platform GUI framework do;
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/
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!
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.
It's unlikely that cabalamat would attempt making most of those and the others could definitely be done as a web/electron app if desired.
But probably shouldn't because we don't produce enough renewable energy yet. There's still something to be said about using TRUE native apps.
Not useless in general, just useless for me
I once wrote a Python program to compile GUIs[1] -- you input a description of the GUI as a text file and it outputs Python code that implements the GUI in Tkinter. I dusted this off for a project last year but eventually decided that making it web-based would be easier to write, look nicer, and have more functionality.
Obviously if other people find WxPython useful, good luck to them.
I'd write a web app and expose it on 127.0.0.1:someport rather than electron (which is bloated). Going down IgorPartola's list:
Text editor - I'd probably make this terminal-based using curses. Then I could easily use it on a remote server I'm ssh'd into.
video, audio editor - I've no plans/desires to write anything like these
system widgets and settings - a web app is highly suitable for editing system settings
web browser - far too big a project for me!
terminal emulator - plenty of good ones around already. I mostly use KDE's konsole.
git GUI client - I've recently been adding some git functionality to my catwiki wiki software (a web app) https://github.com/cabalamat/catwiki
crypto coin wallet - web app
chat client - web app or terminal-based
games - I've considered writing a hex-based board wargame as a web app
document editor - my catwiki wiki software is this, I suppose
security focused software a la Keybase client - the last time I wrote security software was a zero-user-interface email encryption system. If I did something like that in future, any interface would be web based
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
From a programming perspective, modern desktop UI libraries are much more powerful and have less limitations. How you use that power is up to you and your UXD, however.
The standard desktop design paradigms were built by programmers for programmers - a lazy way to approach things leading to clunky to use software. The dog eat dog world of the web and rise of touch has forced us to turn to designers to play a huge role in simplifying interfaces and flows.
UI design and HCI has been a thing for 4+ decades.
The web is a very poor example of those things -- not to mention it has forgotten decades of research and best practices.
What it has is just ubiquity and easy access.
Agree with your opinions, though, you old fart.
NeXTSTEP was fun. Frankly, its still easier to develop for OPENSTEP 4.x then the web. VB when it first came out was amazing and all the VBX control you could buy were amazing. Heck, even the Newton was a lot cleaner to build a UI which still amazes me since Javascript should have been capable of the same type of prototype-based interface.
If the original statement was "I prefer Electron for my desktop apps over Qt/Wx/GTK/etc." I could totally understand that. But the original comment was "My 'go to GUI' is a web app". That's not the same thing. It is our modern version of "when all you have is a hammer, everything looks like a nail."
No. I've written GUI software, and tools for building GUI software[1], in the past.
Edit: at a computer, this would be wx.html2, but it's a wrapper for the native platform's browser components so would vary from system to system.
Rather what is the normal workflow for making UI in web-apps?
How do you keep the abstractions from leaking over?
It seems you need to keep all the CSS quirks in your head to be productive.
As a counterpoint in something like WPF, I do not need to know much or anything about XAML to produce a usable UI quickly that will not break in bizarre ways.
Same goes for PyQT, a few hours starting from scratch(ie not knowing anything about PyQT) and you can make something usable.
WxPython same thing, classes in a control such as wx.dataview look normal enough.
Bootstrap does away with a lot of them.
Having said that, statically linked wxWidgets .exe files are usually smaller than Qt .exe files. Moreover, dynamically linking to Qt does have technical advantages for certain types of applications (mostly plugin architectures).
Shameless plug: You can create all variants (Qt or wxWidget, each statically or dynamically linked) very conveniently on your Linux build server via cross-compiling, which has become really easy thanks to the MXE project that I started in 2007.
Heavily object-oriented code and custom scripting languages that are really hard to understand and use, and when there were problems (memory leaks, reference counting) I was stuck 15 (Qt) calls deep somewhere in the huge codebase.
Thanks, but I'm now doing it myself and learning the right abstractions (and sane software architecture in general), instead of spending my time learning the incantations to make this elephant move the way I need him to.
For Python I like Qt quite a bit because the loose signal/slot approach meshes nicely with a dynamic language.
https://webcache.googleusercontent.com/search?q=cache:ght2vB...
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?
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 ;)
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)
Out of curiosity, any big or important software written in WxPython?
As you can see much of the list is either 'toy' applications or older applications that haven't been updated for ages.
Wonder if they think 4.0 is compatible with 3.0?
Either way it's still available on sourceforge, see the bottom of: https://wxpython.org/pages/downloads/
Full changelog: https://github.com/wxWidgets/Phoenix/blob/master/CHANGES.rst
Migration guide: https://docs.wxpython.org/MigrationGuide.html
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.
It is tested against Python 3 in their Travis config: https://github.com/wxWidgets/Phoenix/blob/master/.travis.yml
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.