Tk Verses Gtk(And Python verses Tcl)
Wednesday, October 31st, 2007Back when I was using Windows, I searched for some language that would let me create GUI application. I knew C++ - but creating a GUI using C++ was very, very hard. After some searching I found Tcl/Tk - it was perfect. I liked Tk so much that I used it to create GUI in perl programs. And in Ruby. And in Python. I even wrote tutorials for Tcl/Tk and Perl/Tk. Then I discovered Linux. initially I was glad that I did not choose VB - that would mean that I have to throw away all my custom programs. But since I used open languages like Tcl, Perl, Ruby etc, they will run on Linux as well.
But when I actually ran the programs in Linux, I got the shock of a lifetime. The applications I created looked bad - really bad…

I still use many Tk programs - but because of the looks issue, I decided to stop using Tk for my new programs. So I decided to try GTK. I even created a small application using PyGTK(my first) to view the harddisk space usage in Linux - Frees.

It was a very simple application - all I had to do is run the ‘df’ command, parse its output, and display a small table using that data. I was expecting around 100, 150 lines of code at the most. But after I created the app, I have 500+ lines of code.
At first, I thought that it was a mistake on my part - I thought that I was not using the best method. But then I came across an article in Reddit - gnocl or PyGtk?.
PyGtk is still the most recommended binding for Gtk. A lot of programs in Linux is written using PyGtk. So naturally there are a few advantages for using it…
- It will be the more ‘road-tested’ binding.
- Many system will have it installed by default.
- Bigger community - so…
- more support
- more examples
- more tutorials
- etc.
One the other hand, I have to write more code.
Conclusion
If it is a private script - only useful for myself, then I will use Tcl/Tk or Gnometcl. If the script could be distributed, like Frees, then I will use Python GTK.
What about the other options…
- wxWidgets
- PyQT
- Ruby/GTK
- Perl/GTK
Any recommendations for me on which library to use? Please leave it in the comments.

