I am fed up with Python GUI toolkits...
kw at codebykevin.com
Wed Jul 20 04:44:42 CEST 2011
OK, I'll bite...
On 7/19/11 10:12 PM, sturlamolden wrote:
> 1. Designed for other languages, particularly C++, tcl and Java.
So? Doing a GUI toolkit is a hard project.
> 2. Bloatware. Qt and wxWidgets are C++ application frameworks. (Python
> has a standard library!)
Again, so? This isn't applicable to Tk, by the way. It's a GUI toolkit
specifically designed for scripting languages.
> 3. Unpythonic memory management: Python references to deleted C++
> objects (PyQt). Manual dialog destruction (wxPython). Parent-child
> ownership might be smart in C++, but in Python we have a garbage
Again, so? Again, this isn't applicable to Tk.
> 4. They might look bad (Tkinter, Swing with Jython).
Then again, they might not. A lot depends on the skill of the
developer. I write highly polished commercial apps with Tk GUI's. I'm
sick of developers blaming their ugly apps on the toolkit rather than
their own lack of design training and/or skills.
> 5. All projects to write a Python GUI toolkit die before they are
> finished. (General lack of interest, bindings for Qt or wxWidgets
> bloatware are mature, momentum for web development etc.)
That's right. People issue a clarion call for a new GUI toolkit, then
discover that even a so-called "ugly, limited, minimalist" toolkit like
Tk has twenty years of development behind it. And people think they can
duplicate this effort in a few months by starting a flame war on
> 1. Lean and mean -- do nothing but GUI. No database API, networking
> API, threading API, etc.
> 2. Do as much processing in Python as possible. No more native code
> (C, C++, Cython) than needed.
And what's wrong with native (ie. compiled) code? Python is written in
native code, isn't it? To extend Python in significant ways, it is often
necessary to drop down into native code.
> 3. Instances of extension types can clean themselves up on
> deallocation. No parent-child ownership model to mess things up. No
> manual clean-up. Python does all the reference counting we need.
> 4. No artist framework. Use OpenGL, Cairo, AGG or whatever else is
"Artist framework"? I'm not sure what you mean here.
> 5. No particular GUI thread synchronization is needed -- Python has a
No comment here.
> 6. Expose the event loop to Python.
> 7. Preferably BSD-style license, not even LGPL.
> 8. Written for Python in Python -- not bindings for a C++ or tcl
Well, that's the holy grail, but given the history of other toolkits,
you'll reach a comparable level of maturity in 2031.
> The Eclipse SWT library does some of this for Java does some of this,
> though it also has flaws (e.g. manual memory management). A Python GUI
> toolkit could be partially based on the SWT code.
Your practical suggestion for the basis for a new Python GUI toolkit
is...a Java GUI toolkit? I'm quite confused.
> Is it worth the hassle to start a new GUI toolkit project?
Not unless you want to reinvent the wheel yet again.
> Or should modern deskop apps be written with something completely
> different, such as HTML5?
If it's written in HTML5, it is, by definition, not a desktop app.
Code by Kevin
More information about the Python-list