Home Contact


Information you need to build high-quality Tk user interfaces.


Modern Tkinter ebook If you've found the material on this site useful, please consider purchasing this e-book (only $10), which is based on the Python material in the tutorial. Doing so helps me maintain and update this site. Thank you very much!



Kindle Buy now for your Kindle
Kindle apps are also available for most smartphones, tablets, and desktops. Payment and download handled by Amazon's Kindle Store.


PDF Buy the DRM-free PDF
Downloads handled by SendOwl.com. Payment handled via PayPal
(click "Don't have a PayPal account" to use a credit card).

These pages hold an archive of previous TkDocs weblog posts.

Ttk Visibility and Awareness.

Far from me to ever comment on marketing-related issues, but a recent thread in the Python newsgroup entitled GUIs - A Modest Proposal beckons...

To summarize, this would be the "need a standard GUI to put in the standard library to replace Tk" discussion that happens periodically among the different language communities. You can guess the usual responses: there shouldn't be a standard one, pick mine, no pick mine instead, why not use a web thing, let's start from scratch because it would be better than anything else and fit more in with the language.

I don't begrudge those discussions, as futile as they are. But one thing they always highlight is how few people are truly aware of the newer themed widgets work that has been in Tk for the last several years. While not suggesting that Tk is the best choice for anybody's GUI, it does seem to me that people using this more modern variant for their applications is a step that is small in effort (and hence achievable) with a fairly substantial improvement in resulting quality.

Part of the difficulty is that programs do need to change a bit to see the improvements, so someone running an older app on a new version of Tk will still see the classic widget set and conclude that Tk is still ugly as sin. I'm not suggesting that the decision to separate things out into a new widget set was a bad decision (it wasn't), but it does make the issue of awareness of the new stuff much harder; people need to be explicitly educated, rather than magically discovering it on their own.

Perl people still using Perl/Tk have a bigger step to take (moving to pTk) because the Perl/Tk approach of essentially extracting Tcl from Tk meant they could never practically migrate to modern Tk versions, but for existing pTk users and users of all the other languages, the steps to improve really are small.

I don't have any grand scheme to change this, but when the opportunity presents itself, it's good to make sure that the correct factual information is out there. That is:

Tk has improved greatly by adding a new, but complementary "themed" widget set (ttk) which will make your apps look much, much better. However, this does require some very minor API changes in your application or you won't see the improvements. All the bindings for your language are available to take advantage of ttk, and you can see a site like TkDocs.com to learn how to easily incorporate them into your application.

Tk may not be the right choice, but it would be terribly wasteful for an existing Tk GUI to be tossed simply because nobody knew that it could be very quickly improved using ttk.