HTML+JS [...] would give an easily customisable ui (HTML+CSS) [...]
You wouldn't need to recompile the ui (in c++ or precompiled python dist) or change the python source code.
GUI elements with no or limited dynamic functionality (simple drag and drop, basic signalling between widgets) can be created and modified in Qt using a nice graphical design tool. Modding does not get easier than requiring no coding experience whatsoever.
GUI elements created in Qt Designer can be either precompiled or loaded dynamically at runtime from XML files. The same thing is basically true for GTK2.
I do agree though that probably more people know how to write JS + HTML source code than Python + Qt source code.
I don't agree that programming UIs is easier than using web tools ... No experience with Dojo though. But GTK is far from being a reference of succint code. At least in C/C++ ...
That's exactly why I brought GTK2 up. In comparison to Qt4, GTK2 is IMHO quite clumsy, unwieldy, unpolished and has fewer powerful widgets. However, in comparison to Dojo from about 5 years back, GTK2 seemed to be elegant and very easy to work with. I should mention that I am using/have used both Qt and GTK via Python bindings, so I never had to deal with the intricacies of C/C++ development.
I definitely agree that GUI development with web tools is easier then GUI development in C/C++, regardless of toolkit used. However, IMHO the "problem" there is dealing with C/C++, which certainly are harder to work with than scripting languages. If you use a mature desktop toolkit like Qt and a friendly scripting language like Python, I really don't see how web tools could be easier to work with.
I am quite unfamiliar with modern web development, so I might be totally wrong here, but:
*) web tools are usually based on a client/server architecture, right? In a desktop application, all that communication just complicates things because you actually don't need a server.
*) web tools run in sandboxes. While that is great from a security standpoint, a desktop application is not directly exposed to potential attacks from the whole world every day, so it does not have to be that resilient. It is clear that increasing security always decreases ease of use, because security requires restrictions. Just look at the fun that is accessing the local file system from Flash for an example of what I'm talking about.
*) this might be a Dojo-specific problem: I remember that I had a hard time getting nice stack tracebacks on errors from java script. I had to use additional tools just to debug efficiently. Python throws a nice traceback on every error and comes with a useful debugger in the standard library.
Python is known to be difficult to sandbox, and if I'm going to have a full fledged scripting language, I just as soon have one I can make secure.
What is secure? A good answer is IMHO: at least as secure as I need it to be. I agree that Python is definitely unsecure, and executing arbitrary modder-generated code is probably as unsecure as it gets. However, lets get some perspective. We are talking about hobbyist desktop applications here. Do we really expect our users to exploit and harm each other? Do we need to protect them? After all, they are running a sex game written by anonymous strangers on their computers which they downloaded from some forum on the internet. On top of that, they are running modifications to that game, written by other anonymous strangers. How secure can their experience be if they are willing to do stuff like that?
If I use one of the sandboxes the Python community created to run modder-generated Python code in, wouldn't that be secure enough? The user base of our games here is about 6 orders of magnitude smaller than the user base of the internet. How big do you think are the odds that one of them has the skills and motivation to compromise a Python sandbox just so he/she can hit a few hundred people tops (not everybody will run every mod)?
Also, with PyQt we don't need to worry about cross browser issues, and quirks of CSS placement which is a bonus. But really, Python is just nice to work with.
Well, rather than dealing with cross-browser issues we are dealing with portability and packaging issues. I've heard cross browser issues got a lot better lately due to Microsoft catching up, so the difference between web and desktop might not be that big any more in this regard.
But really, Python is just nice to work with.