Why are Tk GUI's considered ugly?

Dexygen picture Dexygen · Dec 8, 2008 · Viewed 31.8k times · Source

Tk GUI's seem to be universally considered ugly, but I'd like to know why specifically. Some in the Tcl/Tk world would argue that this is a moot point as there is much better support now for native look and feel, which is a big reason I decided on Tcl/Tk. Now, however, the problem is, because I'm leveraging a Tcl/Starkit vfs (virtual file system), the native file dialogs don't work, and I'm going to have to revert to pure Tk file dialogs.

Please I'm looking for specific, technical reasons, e.g. regarding font aliasing (or lack thereof) or font style, or color, etcetera. Because I personally don't buy the "it's just ugly to me". To me, its just different, and I switch between Mac and Windows and Linux with regularity, so I'm used to different looks/feels.

Specifically, motif-ish look of a traditional Tk GUI is regarded as ugly:

Tcl/Tk GUI Sample

Answer

Bryan Oakley picture Bryan Oakley · Dec 8, 2008

I think part of the reason is that Tk is surprisingly powerful and easy to use but it doesn't do much hand-holding. Since it is so easy, people with little experience in UI design can get something to work in very short order. But, without a lot of experience they rely on defaults and shortest-path-to-a-solution (read: don't take time to hide scrollbars when they aren't needed, don't use common idioms for toolbars, don't properly align widgets, etc).

Unfortunately, Tk's defaults aren't always the prettiest. As the screenshot in the question shows, the default uses relatively thick border widths and suboptimal fonts, and the checkboxes are indeed straight out of the 80's. In the hands of an expert, though, all these problems are minor issues that can be take care of in idle moments.

For example, with five minutes of tweaking, the original screenshot can look like this:

slightly improved ui

Certainly that's still a bit clunky looking, but arguably it's better than the original by a considerable bit. With an hour dedicated to the task, several more improvements could be made.

With tk 8.5 (and actually for a couple years prior) there is support for themes and for native widgets, and even the X11 version gets a minor facelift. Tk is still behind the curve in eye candy though, forcing one to "roll their own" if the design calls for gradients, animations and so forth.

Tcl and Tk, however, remain a good pragmatic solution for most types of applications. If you're trying to compete with a flash application you'll lose. But if you have an industrial application that just needs to work and be usable and perhaps multi-platform, Tk is still one of the best choices out there.


As of 2015, there's a nice write-up about modernizing Tkinter's IDLE IDE. The article describes some of the steps taken to make IDLE more modern looking: