My company is revamping the IT infrastructure and systems, so we are at the middle of finalizing the technology for developing the new system.
We have come to two candidates; Java & Python.
The main criteria of the choice is the language must be complete; in a sense that it must be able to use for web & desktop applications development. Java is proven is this field, with many good web framework (JSF, Hibernate, etc) and relatively good GUI library (SWT, Swing).
However, Python looks more delicious as from my personal experience, development in Python is efficient, I could do more with less time (I only have experience in web development with Django). However, as for the desktop application, I have yet find any good GUI library that comes integrated with the IDE as Swing.
Can someone points me the best if possible GUI framework for desktop application for Python?
For Python GUI, there are 3 main options:
(PySide is a derivation of PyQt).
For building the interface, you can use wxGlade for wx, and the packaged QtDesigner
for PyQt/PySide (Which both can convert the .ui
files to .py
All 3 use native OS widgets, so will look right at home.
Despite having more experience in wx, I actually prefer PyQt, as I find it's a lot easir to work with.
For an integrated IDE for developing Python GUI apps, there aren't any (afaik) complete apps, however, I personally use PyDev in Eclipse, which can handle opening .ui
files in QtDesigner for you, which you'd save, run the tool to make a .py
file, and it'll work pretty much flawlessly.
It is entirely possible to build a SWING GUI application with Python. Look for Jython, which is Python for the JVM. Any pure Python (no compiled C code) libraries for Python will work with Jython including most of the Python standard libraries.
Also, because Jython is a JVM language, it has access to objects provided by Java libraries such as SWING, and also can use the JVM threading model. Multithreading in plain Python is difficult due to the Global Interpreter Lock. Jython does not have that limitation.
If other people in the company are leaning towards Java, then Jython with SWING would be a safer choice because when people say that you should have used Java because Cool Library X is available, you just smile and say that Jython can also leverage Cool Library X because Jython is a JVM language.