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.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

BetterTouchTool 2.305 - Customize multi-...
BetterTouchTool adds many new, fully customizable gestures to the Magic Mouse, Multi-Touch MacBook trackpad, and Magic Trackpad. These gestures are customizable: Magic Mouse: Pinch in / out (zoom... Read more
calibre 3.8.0 - Complete e-book library...
Calibre is a complete e-book library manager. Organize your collection, convert your books to multiple formats, and sync with all of your devices. Let Calibre be your multi-tasking digital librarian... Read more
Carbon Copy Cloner 5.0.2 - Easy-to-use b...
Carbon Copy Cloner backups are better than ordinary backups. Suppose the unthinkable happens while you're under deadline to finish a project: your Mac is unresponsive and all you hear is an ominous,... Read more
Evernote 6.12.3 - Create searchable note...
Evernote allows you to easily capture information in any environment using whatever device or platform you find most convenient, and makes this information accessible and searchable at anytime, from... Read more
Default Folder X 5.1.6 - Enhances Open a...
Default Folder X attaches a toolbar to the right side of the Open and Save dialogs in any OS X-native application. The toolbar gives you fast access to various folders and commands. You just click on... Read more
Geekbench 4.1.2 - Measure processor and...
Geekbench provides a comprehensive set of benchmarks engineered to quickly and accurately measure processor and memory performance. Designed to make benchmarks easy to run and easy to understand,... Read more
GraphicConverter 10.5 - $39.95
GraphicConverter is an all-purpose image-editing program that can import 200 different graphic-based formats, edit the image, and export it to any of 80 available file formats. The high-end editing... Read more
Dropbox 35.4.20 - Cloud backup and synch...
Dropbox is an application that creates a special Finder folder that automatically syncs online and between your computers. It allows you to both backup files and keep them up-to-date between systems... Read more
XMind 8 Update 4 - Popular mind mapping...
XMind is the most popular mind mapping tool. Millions of people use XMind to clarify thinking, manage complex information, run brainstorming and get work organized. It couldn't be easier to get... Read more
Safari Technology Preview 11.1 - The new...
Safari Technology Preview contains the most recent additions and improvements to WebKit and the latest advances in Safari web technologies. And once installed, you will receive notifications of... Read more

The best new games we played this week -...
It's pretty much been one big release after another. We were privy to a bunch of surprises this week, with a lot of games we'd been waiting for quite some time dropping unexpectedly. We hope you're free this weekend, because there is a lot for... | Read more »
Stormbound: Kingdom Wars guide - how to...
Stormbound: Kingdom Wars is an excellent new RTS turned card battler out now on iOS and Android. Lovers of strategy will get a lot of enjoyment out of Stormbound's chess-like mechanics, and it's cardbased units are perfect for anyone who loves the... | Read more »
The best AR apps and games on iOS right...
iOS 11 has officially launched, and with it comes Apple's ARKit, a helpful framework that makes it easier than ever for developers to create mobile AR experiences. To celebrate the occassion, we're featuring some of the best AR apps and games on... | Read more »
Phoenix Wright: Ace Attorney - Spirit of...
Phoenix Wright: Ace Attorney - Spirit of Justice 1.00.00 Device: iOS Universal Category: Games Price: $.99, Version: 1.00.00 (iTunes) Description: ************************************************※IMPORTANT※・Please read the “When... | Read more »
Kpressor (Utilities)
Kpressor 1.0.0 Device: iOS Universal Category: Utilities Price: $4.99, Version: 1.0.0 (iTunes) Description: The ultimate ZIP compression application for iPhone and iPad. - Full integration of iOS 11 with support for multitasking.-... | Read more »
Find out how you can save £35 and win a...
Nothing raises excitement like a good competition, and we’re thrilled to announce our latest contest. We’ll be sending one lucky reader and a friend to the Summoners War World Arena Championship at Le Comedia in Paris on October 7th. It’s the... | Read more »
Another Lost Phone: Laura's Story...
Another Lost Phone: Laura's Story 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Another Lost Phone is a game about exploring the social life of a young woman whose phone you have just... | Read more »
The Witness (Games)
The Witness 1.0 Device: iOS Universal Category: Games Price: $9.99, Version: 1.0 (iTunes) Description: You wake up, alone, on a strange island full of puzzles that will challenge and surprise you. You don't remember who you are, and... | Read more »
Egg, Inc. guide - how to build your gold...
Egg, Inc.'s been around for some time now, but don't you believe for one second that this quirky clicker game has gone out of style. The game keeps popping up on Reddit and other community forums thanks to the outlandish gameplay (plus, the... | Read more »
The best deals on the App Store this wee...
Good news, everyone! Your favorite day of the week has arrived at last -- it's discount roundup day! This fine Wednesday evening we're gathering up the hottest deals on the App Store. We've got action platformers, we've got puzzle games, we've got... | Read more »

Price Scanner via MacPrices.net

Apple Offering Up To $455 Credit Toward iPhon...
iPhone 8 and 8 Plus are now available at the Apple Store, and you can receive up to $375 credit toward a new iPhone purchase when you trade in your eligible smartphone. Photo Courtesy Apple Just... Read more
AnyTrans Offers iOS Users Three Ways For Movi...
iMobie Inc. today announceed AnyTrans v6.0.1, which now can help iOS users move all data to iPhone 8/8 Plus seamlessly. The software is available both on Mac and Windows and fully able to move all... Read more
Snag a 13-inch 2.3GHz MacBook Pro for $100 of...
B&H Photo has 2017 13″ 2.3GHz MacBook Pros in stock today and on sale for $100 off MSRP, each including free shipping plus NY & NJ sales tax only: – 13-inch 2.3GHz/128GB Space Gray MacBook... Read more
Verizon offers new iPhone 8 for $100-$300 off...
Verizon is offering the new iPhone 8 for up to $300 off MSRP with an eligible trade-in: • $300 off: iPhone 6S/6S Plus/7/7 Plus, Google Pixel XL, LG G6, Moto Z2 Force, Samsung Galaxy S7/S7 edge/S8/S8... Read more
Apple Refurbished 2017 13-inch MacBook Pros a...
Apple has Certified Refurbished 2017 13″ Touch Bar MacBook Pros in stock today and available for $200-$300 off MSRP. A standard Apple one-year warranty is included with each MacBook, and shipping is... Read more
OWC USB-C Travel Dock with 5 Ports Connectivi...
OWC have announced the new OWC USB-C Travel Dock, the latest addition to their line of connectivity solutions. The USB-C Travel Dock lets you connect its integrated USB-C cable to a Mac or PC laptop... Read more
Pelican Products, Inc. Unveils Cases For All...
Pelican Products, Inc. has announced the launch of its full line of cases including Voyager, Adventurer, Protector, Ambassador, Interceptor (for the Apple iPhone 8 and 8 Plus backwards compatible... Read more
$100 off new 2017 13-inch MacBook Airs
B&H Photo has 2017 13″ MacBook Airs on sale today for $100 off MSRP including free shipping. B&H charges NY & NJ sales tax only: – 13″ 1.8GHz/128GB MacBook Air (MQD32LL/A): $899, $100 off... Read more
Apple restocks Certified Refurbished 13-inch...
Apple has Certified Refurbished 2015 13″ MacBook Airs available starting at $719 and 2016 models available starting at $809. An Apple one-year warranty is included with each MacBook, and shipping is... Read more
Is iPhone X Really The Future Of The Smartpho...
Should iPhone X even be called a telephone? It does of course support telephony and texting, but its main feature set is oriented to other things. It is also debatable whether it makes any rational... Read more

Jobs Board

Specialist - Retail Customer Services and Sal...
The position listed below is not with Tennessee Interviews but with Apple , Inc. Tennessee Interviews is a private organization that works in collaboration with Read more
Specialist - Retail Customer Services and Sal...
The position listed below is not with South Carolina Interviews but with Apple , Inc. South Carolina Interviews is a private organization that works in collaboration Read more
Behavior Technician with *Apple* Consulting...
The position listed below is not with Washington Interviews but with APPLE CONSULTING Washington Interviews is a private organization that works in collaboration Read more
Infection Control RN with *Apple* Rehab - A...
The position listed below is not with Georgia Interviews but with Apple Rehab Georgia Interviews is a private organization that works in collaboration with Read more
Specialist - Retail Customer Services and Sal...
The position listed below is not with South Carolina Interviews but with Apple , Inc. South Carolina Interviews is a private organization that works in collaboration Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.