TweetFollow Us on Twitter

Tk: A Portable GUI Toolkit

Volume Number: 19 (2003)
Issue Number: 4
Column Tag: Section 7

Tk: A Portable GUI Toolkit

Expressiveness and Simplicity Count for a lot

by Rich Morin

Last month, I mentioned Tk, referring to it as an X11 toolkit. This month, I'd like to cover Tk in a bit more detail. I should begin, however, by clarifying that Tk is not just an X11 toolkit; in fact, it is a platform- and language-independent GUI toolkit.

Tk can be used with C, Perl, Python, Ruby, Tcl (Tk's original counterpart), and many other programming languages. It can be used with Aqua, PalmOS, X11, and assorted Microsoft APIs. In summary, any modern computer with the appropriate hardware probably has Tk support.

Tk also wins big on expressiveness and simplicity. Most GUI toolkits (e.g., Cocoa and assorted X11 "widget sets") are complex and have steep learning curves. Tk, in contrast, is remarkably simple to program, once a few basic concepts have been mastered. Although Tk may not have all the features of Cocoa, it supports most of the widgets you are likely to need; it also has ways to add new widgets, if you're feeling sufficiently motivated.

Tcl/Tk

Because Tk started as a toolkit for the Tcl language, most of the Tk resources you'll find are actually for Tcl/Tk, the language/toolkit combination. Also, because Tcl/Tk is the focus of development, the other language bindings (e.g., Perl/Tk, Tkinter) occasionally lag behind. Finally, if you want to extend Tk, you'll probably find yourself coding some Tcl in the process.

In short, you should plan to learn a bit of Tcl, even if you intend to use Tk with some other language. Fortunately, this isn't particularly painful; Tcl syntax only takes about five minutes to learn (most of which you'll spend accepting the idea of how simple the syntax really is :-).

Pick up a copy of the Mac OS X Tcl/Tk port from:

http://www.apple.com/downloads/macosx/unix_open_source/tcltk.html

Be sure to look at the ReadMe files; they contain a number of useful pointers and critical details. After the (dmg, mpkg) installation finishes, you should find a copy of "Wish Shell":

/Applications/Utilities/Wish Shell.app

When you start up the app, two windows will appear. The "Console" window allows you to run Tcl commands, viewing the output:

set a 123
123
() 2 % set b [expr $a * 2]
246
() 3 %

Tcl isn't a conventional language and it isn't processed in a conventional manner. Although some parts of Tcl syntax look a bit like C or Perl, the interpreter is simply performing a sequence of commands and string substitutions. Thus, the first line sets a variable ("a") to the text string ("123"). You may think of this as a numeric value, but the Tcl interpreter doesn't.

The second line does three things. First, it performs a "variable substitution", replacing "$a" with the value "123". Next, it performs a "command substitution", replacing the expression "[expr $a * 2]" with the result (246). Finally, it sets "b" to the resulting value.

Now, let's bring Tk and the other (Wish Shell) window into play:

() 3 % button .b -text "Hello, world!" -command exit
.b
() 4 % pack .b
() 5 %

If all went as expected, the "Wish Shell" window should now contain a button labeled "Hello, world!". Pushing that button should cause the Wish Shell to exit (and both of its windows to disappear). In two lines of code, you have created and run a (tiny) windowing application!

If you simply want to program in Tcl/Tk, you are now in a position to do so. The results will look nicely Aquafied (Aquatic?) and you don't have to tell anyone how little code you wrote! If you become intrigued with Tcl/Tk, be sure to pick up John Ousterhout's excellent (if dated) "Tcl and the Tk Toolkit" (Addison-Wesley). John created both Tcl and Tk, so he's eminently qualified to say how they should be used.

Perl/Tk

Although Tcl is syntactically interesting, extremely portable, and quite flexible, you may prefer (as I do) to do your actual programming in some other language. Perl/Tk allows Perl programmers to use Tk widgets, while keeping the rest of their code in Perl. As hinted above, analogous libraries are available for C, Python, Ruby, and other programming languages.

Having said this, I should note that Tk calls may not be a smooth fit into the syntax of the chosen language. Here is a Perl/Tk translation of our simple window example:

use Tk;
my ($b, $mw);
$mw = new MainWindow;
$b  = $mw->Button(-text    => 'Hello, world!',
                  -command => sub { exit; });
$b->pack();
Mainloop();

This code is substantially larger, but the original Tk commands and arguments are still present (albeit buried in Object-Oriented Perl syntax :-). Several lines of overhead code bring in the Tk module, declare a couple of variables, create a window, and finally, start up the Tk event loop. Also note that we are no longer using the Tcl exit command; instead, we have created an anonymous Perl function which uses Perl's own exit command.

If you want to play with Perl/Tk, your first step should be to purchase a copy of "Learning Perl/Tk" (Nancy Walsh, O'Reilly). Buy Ousterhout's book, too, if you can; you won't regret it!

Now for the bad news: installing Perl/Tk on Mac OS X is quite complex and (worse) still in a state of flux. It is possible, with some difficulty, to make Perl/Tk work with Apple's X11 server and Developer Kit. I don't know of a way to get Perl/Tk to work with the native Tk port (as installed above), but I hope to have more information by the time this column is in print. Look for instructions on

http://www.cfcl.com/rdm/section7/perltk.html

I also suggest, for the brave-hearted, the following links:


Rich Morin has been using computers since 1970, Unix since 1983, and Mac-based Unix since 1986 (when he helped Apple create A/UX 1.0). When he isn't writing this column, Rich runs Prime Time Freeware (www.ptf.com), a publisher of books and CD-ROMs for the Free and Open Source software community. Feel free to write to Rich at rdm@ptf.com.

 
AAPL
$100.58
Apple Inc.
+0.01
MSFT
$45.22
Microsoft Corpora
+0.27
GOOG
$583.37
Google Inc.
-1.12

MacTech Search:
Community Search:

Software Updates via MacUpdate

Quicken 2015 2.0.1 - Complete personal f...
The new Quicken 2015 helps you manage all your personal finances in one place, so you can see where you're spending and where you can save. Quicken automatically categorizes your financial... Read more
CleanMyMac 2.2.7 - Delete files that was...
CleanMyMac makes space for the things you love. Sporting a range of ingenious new features, CleanMyMac 2 lets you safely and intelligently scan and clean your entire system, delete large, unused... Read more
MacFamilyTree 7.2.4 - Create and explore...
MacFamilyTree gives genealogy a facelift: it's modern, interactive, incredibly fast, and easy to use. We're convinced that generations of chroniclers would have loved to trade in their genealogy... Read more
Videobox 4.1.1 - Download Flash video th...
Videobox allows you to quickly and easily download Flash video from most all of the popular video sites on the internet. Videobox will convert the video into a native Quicktime format so it's ready... Read more
Web Snapper 3.3.5 - Capture entire Web p...
Web Snapper lets you capture Web pages exactly as they appear in your browser. You can send them to a file as images or vector-based, multi-page PDFs. It captures the whole Web page - eliminating... Read more
Picasa 3.9.138 - Organize, edit, and sha...
Picasa and Picasa Web Albums allows you to organize, edit, and upload your photos to the Web from your computer in quick, simple steps. Arrange your photos into folders and albums and erase their... Read more
Tidy Up 3.0.15.0 - Find duplicate files...
Tidy Up is a complete duplicate finder and disk-tidiness utility. With Tidy Up you can search for duplicate files and packages by the owner application, content, type, creator, extension, time... Read more
Parallels Desktop 10.0 - Run Windows app...
Parallels Desktop is simply the world's bestselling, top-rated, and most trusted solution for running Windows applications on your Mac. With Parallels Desktop for Mac, you can seamlessly run both... Read more
Apple Final Cut Pro X 10.1.3 - Professio...
Apple Final Cut Pro X is a professional video editing solution.Completely redesigned from the ground up, Final Cut Pro adds extraordinary speed, quality, and flexibility to every part of the post-... Read more
Apple Compressor 4.1.3 - Adds power and...
Compressor adds power and flexibility to Final Cut Pro X export. Customize output settings, work faster with distributed encoding, and tap into a comprehensive set of delivery features. Powerful... Read more

Latest Forum Discussions

See All

DotEmu Summer Sale Cuts Several Games’ P...
DotEmu Summer Sale Cuts Several Games’ Prices to $0.99 Posted by Ellis Spice on August 21st, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
King Announces its Newest “Saga” – Diamo...
King Announces its Newest “Saga” – Diamond Digger Saga Posted by Jessica Fisher on August 21st, 2014 [ permalink ] Diamond Digger Saga, by King Digital Entertainment, promises to be another addictive, adorable game in the “Saga” | Read more »
Spacetime Studios’ Greg Mueller Tells Al...
| Read more »
TourStar Review
TourStar Review By Rob Thomas on August 21st, 2014 Our Rating: :: BORING TOURINGUniversal App - Designed for iPhone and iPad When The Ramones sang “Touring, touring/It’s never boring,” they clearly weren’t referring to TourStar.... | Read more »
Track Your Pregnancy with Glow Nurture
Track Your Pregnancy with Glow Nurture Posted by Jessica Fisher on August 21st, 2014 [ permalink ] iPhone App - Designed for the iPhone, compatible with the iPad | Read more »
Outcast Odyssey – An Interview with the...
At this year’s San Diego Comic-Con, fans got the chance to meet and mingle with several of the artists behind Magic Pixel Games and Namco Bandai’s upcoming card battler, Outcast Odyssey. Considering many of these artists have worked on comics in the... | Read more »
BoxPop Review
BoxPop Review By Jennifer Allen on August 21st, 2014 Our Rating: :: UNTAXING PUZZLESUniversal App - Designed for iPhone and iPad Move from tile to tile to clear the board in this slightly too simple and easy puzzle game.   | Read more »
Breakdown Buddy Review
Breakdown Buddy Review By Jennifer Allen on August 21st, 2014 Our Rating: :: FLAWED CONCEPTiPhone App - Designed for the iPhone, compatible with the iPad There’s a good idea here, but Breakdown Buddy isn’t as useful as it tries to... | Read more »
jamstik, the Guitar You Can Take Everywh...
jamstik, the Guitar You Can Take Everywhere, is Now Available for Purchase Posted by Jessica Fisher on August 21st, 2014 [ permalink ] Zivix has announced that their guitar-in-your-pocket, | Read more »
Star Walk 2 - Guide to the Sky Day and N...
Star Walk 2 - Guide to the Sky Day and Night 1.0.0 Device: iOS Universal Category: Education Price: $2.99, Version: 1.0.0 (iTunes) Description: The next generation of the best-selling Star Walk, winner of Apple Design Award, used by... | Read more »

Price Scanner via MacPrices.net

21-inch iMacs on sale for up to $150 off MSRP
B&H Photo has 21″ iMacs on sale for up to $150 off MSRP including free shipping plus NY sales tax only. B&H will also include a free copy of Parallels Desktop software: - 21″ 2.7GHz iMac: $... Read more
27-inch 3.2GHz iMac on sale for $1698, save $...
Abt has the 27″ 3.2GHz iMac on sale for $1698 including free shipping. Their price is $101 off MSRP. Read more
Mac Backup Guru 2.0 Drive Backup/Cloneing Uti...
Mac Backup Guru developer MacDaddy has released Mac Backup Guru 2.0, offering new and enhanced advanced features, such as bootable backups, synchronised volumes and folders, and a Snapshot mode that... Read more
Operate GE’s New Free-Standing KItchen Range...
Think you accidentally left the oven on? Switch it off while on the go. The new free-standing Profile™ Series gas and electric ranges are GE’s second cooking appliances, following their wall oven, to... Read more
Parallels Announces Parallels Desktop 10 for...
The no. 1-selling software for running Windows applications on a Mac becomes an even easier choice for millions of consumers and IT professionals worldwide with the launch of the most powerful... Read more
Apple now offering certified refurbished 2014...
 The Apple Store is now offering Apple Certified Refurbished 2014 MacBook Airs for up to $180 off the cost of new models. An Apple one-year warranty is included with each MacBook, and shipping is... Read more
Best Buy’s College Student Deals: $100 off Ma...
Take an additional $100 off all MacBooks and iMacs, $50 off iPad Airs and iPad minis, at Best Buy Online with their College Students Deals Savings, valid through September 6th. Anyone with a valid .... Read more
MacBook Airs on sale for $100 off MSRP, free...
B&H Photo has three 2014 MacBook Airs on sale for $100 off MSRP. Shipping is free, and B&H charges NY sales tax only. They also include free copies of Parallels Desktop and LoJack for Laptops... Read more
Razer Taipan Mouse For Gamers And Non-Gamers...
If you’re a serious gamer on either Mac or Windows PCs, a serious gaming mouse is a necessity for first-tier performance. However, even if like me you’re not much of a gamer, there’s still a strong... Read more
15-inch 2.2GHz MacBook Pro on sale for $1899,...
Adorama has the new 15″ 2.2GHz Retina MacBook Pro on sale for $1899 including free shipping plus NY & NJ sales tax only. Their price is $100 off MSRP, and it’s the lowest price available for this... Read more

Jobs Board

*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
Position Opening at *Apple* - Apple (United...
**Job Summary** As more and more people discover Apple , they visit our stores seeking ways to incorporate our products into their lives. It's your job, as a Store Read more
Position Opening at *Apple* - Apple (United...
…Summary** As a Specialist, you help create the energy and excitement around Apple products, providing the right solutions and getting products into customers' hands. You Read more
Project Manager, *Apple* Financial Services...
**Job Summary** Apple Financial Services (AFS) offers consumers, businesses and educational institutions ways to finance Apple purchases. We work with national and Read more
*Apple* Solutions Consultant (ASC)- Retail S...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.