Hello. Could anybody please tell me which is the best software to do GUI programming in Linux and some books for it?
Take a look at Qt (www.trolltech.com). In my opinion the best method to create a GUI (especially Qt supports the "Signals and Slots"-princip).
You can use it in C++, Java and Python and it's also platform independent (if you decide to port your program also to Windows or MacOS X). The documentation is really good, there are many many tutorials, so you even don't need any book.
I second the suggestion to try Qt. You might also want to see these other Stack Overflow questions
- GUI Development in Linux
- Linux GUI development
- How do you make linux GUI’s? (questioner wanted a really low level approach)
I also vote for Qt.
Some advantage:
- It is not only for Linux but multi platform. So if you want sometime to port your application to Windows, Mac or Mobile devices you can do it with minimal effort.
- It has a huge class library supporting xml, opengl, and many other often used tools (platform independently)
- Since version 4.5 it has GPL, LGPL and commercial licenses which means you can use it in your commercial software without paying any fee and forced to open your code.
- Qt improves very fast. Nokia has just bought it from Trolltech and there is a huge effort to make it used more widely.
- Qt has a very good IDE called Qt Creator. It has many useful features and also platform independent. You can debug your code in that.
- Although I use Qt only with c++ but as far as a know there is Java and Python binding.
But there are other possibilities for linux gui programming:
- Java
- C# - Mono: http://www.mono-project.com/Main_Page
- A Delphi like thing: http://www.lazarus.freepascal.org/
- wxWidget: http://www.wxwidgets.org/
- TCL/Tk if you just want to write scripts
- QTK+ as ypnos suggested
And I guess many more.
Instead of paraphrasing the author of the article, I warmly recommend to read Linux GUI Application Development for Windows Programmers.
Even if this article is a bit old now, most of the tools and languages it covers are still there today and the expressed opinions are not that much outdated. Tools are evaluated against some interesting criteria (yours might of course be different) and you'll find the results in this comparison matrix.
I'm not saying you should take the content of this article "as is" but it's a very good starting point and you could use a similar approach or methodology to find a toolkit/language/tool that'll suit your needs.
As mentioned at @Vereb answer, the list is missing gtk (www.gtk.org).
On http://www.gtk.org/documentation.html you see a lot of tutorials. The toolkit has bindings for many different languages (http://www.gtk.org/language-bindings.html) and most of those bindings have translated the basic tutorial to that language.
I really like that toolkit - I tried QT before, but back then, it lacked a good ruby-binding. Glade (http://glade.gnome.org/) helps in rapidly designing a GUI. Glade helps you create .xml-files with the GUI-design. These glade-files don't need to be preprocessed to be used (is this still necessary for QT?) so adjustments are immediately visible.
When you would use the Ruby-binding, Rugui (http://rugui.org/) is a Ruby on Rails like framework that helps you to develop bigger GUI-programs. Recently, it supports QT too, though.