Python is what I use for everything - but I rarely desktop GUI applications. In fact, I came to the forum today to ask a question about using Pascal/Lazarus to write a GUI wrapper around some Python code.
Stuff I have developed in Python:
- Lots of web sites using Django - the best web dev framework IMO.
- Data visualisation
- A cross platform GUI to run on low resource embedded devices
- APIs for Solr based search
- Web crawlers
- A simple GUI around an existing script
I do
use a lot of Python GUI software, even though I have never written anything non-trivial myself.
Examples of Python GUI software I use:
- Zim - desktop wiki
- Deluge - torrent client
- Quod Libet - music player
- Calibre - ebook library manager
- TortoiseHg - GUI for Mercurial
That excludes all Python development related stuff, and non-GUI applications such as Mercurial. I am probably missing a lot because Python is so pervasive on Linux and I often do not know what language applications I use are written in.
Python is a brilliant language. Significant whitespace makes it extremely readable and means you never do things like forgetting a end of line semi-colon or a closing brace. It is concise, multi-paradigm, and has lots of libraries. It has a huge breadth of application. Its biggest weaknesses are:
- it is slow, so it can be a bad choice for computationally intensive stuff (Pypy and Cython can help a lot with that, as does the availability of a lot of C libraries for Python).
- lack of GUI RAD tools (except for Boa Constructor with is unmaintained)
Oh, it's for defining *blocks of code*? Oh well, there are blocks of code and there are lines of code. Why not also require each line of code to terminate in one, exactly one, space character?]
Python does use whitespace to define lines of code. A newline ends a line of code. It uses the appropriate whitespace in each case. Your rhetorical question is a bit like asking "oh it uses words to end blocks of codes. Why not end each line of code with "antidisestablishmentarianism"? Imagine the headache."
I have had instances in the past of whitespace being trashed in files and the thought of that happening to a large Python program leaves me stone cold]
Python has been my main language for the last 10 years and that has never happened.
How did it happen to you? What trashed the whitespace?
it seems to fall short when I try it on a major desktop app. I usually fall back to Lazarus, C# or C/C++.
That may be the case. That is why I am interested in learning Free Pascal and Lazarus. That said, other people seem to use Python for desktop apps successfully.
Instead of QT look at PySide http://wiki.qt.io/PySide it is basically PyQT but allows both free open source and proprietary software development.
I think PyQt is more actively developed, and if you are selling proprietary software you should be able to afford the license.
There are also a LOT of other GUI libraries for Python: tkinter (part of the standard library), wxPython, PyGTK, Kivy (good for mobile) and others. That is part of the problem though - I am not sure which one to use in a particular case.
The problem is that being a Python application, it really shows in the speed of queries
I do not really see how that can happen. All the Python code really does is hand the queries to a C library that then sends them to the DB server. Something else must be going wrong.