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 Payment handled via PayPal
(click "Don't have a PayPal account" to use a credit card).

A wide variety of dynamic languages include bindings to Tk, whether included as part of the primary language distribution, or available as an add-on. We list some of the most popular here.

Languages using Tk

Tcl (
Tcl is a very stable and mature but evolving open source dynamic language, originally created by John Ousterhout in the mid-80's. Tcl uses a novel "Everything is a String" (EIAS) paradigm, which turns out to be a facade on a highly efficient, type-based and fully Unicode-compliant bytecode engine. Tk was created explicitly for Tcl, and the Tk library relies on Tcl extensively. The same core team maintain and evolve both the Tcl language and Tk toolkit distributions, which are generally released in lockstep. Because they're so tightly integrated, most of the information and links on the Tk backgrounder page are relevant.

Ruby (
Ruby is a simple and elegant open source dynamic language, created by Yukihiro “matz” Matsumoto, who still leads the core development effort. Created in the mid-90's, Ruby is just now coming into its own, with Rails bringing in huge waves of new developers. Inspired by languages like Perl and Smalltalk, Ruby is highly object-oriented, and a bytecode compiler is now under development. The development of Ruby's Tk bindings, under the name "RubyTk", is led by Hidetoshi Nagai. RubyTk relies on a separate Tcl/Tk installation on the machine, and communicates with it via sending Tcl commands. RubyTk also includes wrappers for a wide variety of Tk extensions.

Python (
Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It was initially created by Guido van Rossum in the late-80's. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. In fact, Python has long included a complete Tk distribution as part of its standard distribution. Python's 'Tkinter' binding to Tk is one of the cleanest and natural Tk interfaces in any language.

Perl (
Perl is an incredibly powerful dynamic language, originally designed for text processing, but now suitable for a huge range of uses. Perl originated in the late 80's, and was rapidly embraced by the system administration community. Its popularity grew tremendously when it became the de facto standard for web CGI scripts in the mid-90's. Perl's often cryptic syntax is loved and hated by many, and is as idiosyncratic as Perl's creator, Larry Wall. Perl was an early adopter of Tk as a GUI, primarily through Perl/Tk, created by the late Nick Ing-Simmons. Because Perl/Tk extricated Tcl from Tk, it took considerable effort to track newer Tk releases, and so has waned in modern years. The recommended Tk binding for Perl now is the "Tkx" module, a much smaller layer that provides a direct bridge to the Tcl API that Tk exposes.