I've been programming in tcl/tk since 1993. I have several tcl/tk projects in the public domain which I'm maintaining, some more actively than others.
Tcl/tk is my language of choice for throwing together short, fun little graphical programs. I seem to have a ton of these lying around, and I'm slowly digging them out, converting them from whatever prehistoric version of TK they were originally written in, and posting them here. I hope you like them.
Project | Date | What |
---|---|---|
TkFibs | 1994-10-10 | a GUI to FIBS--the First Internet Backgammon Server |
tcl-only datefield | 2002-02-20 | a tcl only clone of iwidgets datefield widget. This is now part of tklib |
sockspy | version 2.0 of Tom Poindexter's ethernet sniffer program | |
klimb | 2001-07-25 | a really cool bike route planner |
Dragon Curve | 2002-05-09 | draws the Dragon Curve fractal |
Octabug | 2002-06-07 | draws an Octabug which morphs from a octahedron into an open cuboctahedron and back. |
TkTopoMap | 2002-08-22 | fetches and displays USGS topomaps or aerial images for any location in the US. |
Why manhole covers are round | 2002-09-22 | fun animation which amplifies one answer to this question. |
3D Maze | 2003-04-07 | based on maze generator2, lets you create and interactively solve 3D mazes. |
SpiroGraph | 2002-09-30 | a program that simulates the kid's drawing game of SpiroGraph. It draws epicycloids and hypocycloids and lets you tweak various parameters. WARNING: it can become addictive drawing the different shapes. |
TkChallenger | 2002-10-09 | a tcl/tk game that lets you solve the Challenger puzzles that you find in the daily paper. |
TkPente | 2002-10-15 | a two-player version of the popular Pente game. |
TkOverload | 2002-10-18 | another two-player logic game. |
Dot to Dots | 2002-10-21 | a dot-to-dot game that I wrote for my 3-year old. |
Pass by reference | 2002-09-19 | syntactic sugar to get automatic pass by reference calling convention |
Semaphore Flag Signalling System | 2002-11-05 | lets you play with semaphore flags |
Maritime Signal Flags | 2002-11-05 | lets you play with both semaphore flags and with signal flags |
Fractal Mountains | 2002-11-11 | draws mountain landscapes using fractals |
Møiré Patterns | 2002-11-14 | another short graphical program, this one lets you play around generating various Moiré patterns |
Mandelbrot | 2002-11-19 | more fractals, this time the Mandelbrot fractal |
Juggler | 2002-11-25 | cute little program showing someone juggling up to 20 balls |
TkMapper | 2003-01-15 | tired of Yahoo maps being only 400x400 in size? This program grabs neighboring Yahoo maps and tiles them on the screen letting you build up a fuller map of an area. |
Bitmap Editor | 2002-01-16 | a simple program to edit tcl/tk bitmaps |
a triangle puzzle | 2003-01-26 | graphic visualization of a classic triangle counting puzzle |
TkRose | 2003-01-30 | draws rosette figures |
Morley's Miracle | 2003-02-07 | a whizzlet visualizing the Morley's Miracle theorem |
Bulging Line Illusion | 2003-02-07 | an optical illusion |
Hilbert Curve | 2003-02-10 | a whizzlet drawing the Hilbert plane-filling curve |
Buffon's Needle | 2003-02-18 | a whizzlet showing how you can estimate pi (?) by dropping needles |
3 Triangles | 2003-02-18 | another whizzlet about three equilateral triangles |
tkAtaxx | 2003-02-19 | an implementation of the popular Ataxx arcade game |
Polyhedron Nets | 2003-03-06 | draws polyhedron nets, 2-D unfolding of a 3-D solid that you can print, cut out and fold to create polyhedron models. |
Cubic Splines | 2003-03-07 | routine (w/ demo) to generate a cubic spline curve from a set of control points |
Arrow buttons | 2003-03-12 | buttons with bitmaps of arrows in four directions |
Drawing rounded polygons | 2003-03-19 | applied the ideas found in Drawing rounded rectangles to any polygon. |
Canvas Rotation | 2003-03-19 | routines to rotates items on a canvas. Works well for polygons and lines but not ovals or text. |
Named Colors | 2003-03-21 | displays all the colors Tk knows the name for (for those who don't have xcolors) |
tkGoldberg | 2003-03-21 | a really fun Rube Goldberg whizzlet |
Regular Polygons 2 | 2003-03-24 | a generalization of Regular Polygons to support -start and -extent parameters |
3D Hilbert Curve | 2003-04-07 | like Hilbert Curve but in 3 dimensions |
Playing Card Images | 2003-04-25 | image data for playing cards |
Scat | 2003-04-25 | play the card game scat against the computer |
Falling Marbles | 2003-04-29 | animation of marbles falling down a peg board |
Rain Storm | 2003-05-04 | simulates rain drops on a window |
Lissajous Figures | 2003-05-09 | draws Lissajous figures |
Puzzle Blocks | 2003-05-12 | move blocks to solve a puzzle |
Video Poker | 2003-05-28 | lets you play Jack or Better video poker |
Eliminator | 2003-05-31 | a moving ball puzzle game |
Gem Game | 2003-06-04 | another puzzle game |
Triangle Madness | 2003-07-09 | a visualization of some interesting properties of a triangle. |
Square Root | 2003-07-14 | various ways to calculate a square root |
Hack-O-Matic | 2003-09-03 | a visual binary editor written as a challenge |
Printing text files under Windows | 2003-09-10 | |
Variable versus a Global Array | 2003-09-14 | thoughts on global variables |
TkMines | 2003-09-24 | updated version of Tk Minesweeper |
Widget Configure | 2003-09-24 | a debugging tool to interactive configure a widget |
I love foreach | 2003-09-29 | why the foreach command is beautiful |
Starfield | 2003-10-06 | another starfield animation |
Collapse | 2003-10-31 | yet another arcade type game |
Pastel Colors | 2003-11-06 | picks random pastel colors |
Wiki History Diff | 2003-11-07 | does diffs on back versions of wiki pages |
Word Jumble | 2003-11-11 | an anagram game |
Pig Latin | 2003-11-12 | translates text into pig latin |
SkipList | 2003-05-15 | a tcllib module that implements skip lists |
SkipList Demo | 2003-11-21 | a demo on how skip lists work |
Fern Fractal | 2003-12-01 | draws the Barnsley's Fern fractal |
A Very Simple Weather App | 2003-12-03 | simple app showing current temperature |
A Simple Fan Animation | 2004-01-30 | an animation of a rotating fan |
Parsing XML | 2004-03-01 | yet another xml/html parser, this one in pure tcl |
Parallel Geturl | 2004-03-06 | how to efficiently download lots of web pages |
Azimuth Plotting | 2004-03-10 | help in locating benchmarks |
Universal Transverse Mercator | 2004-04-15 | conversions to and from UTM coordinates |
Print Area Selector | 2004-03-31 | control to select an area of a canvas to print |
Convolutions | 2004-05-20 | fun visual affects |
Following Redirects | 2004-06-18 | a better way of handling http redirects |
Tic Tac Toe | 2004-09-10 | can you guess what this is? |
Lights Out | 2004-09-10 | a one-person puzzle |
Rush Hour | 2004-09-13 | get the red car out of the traffic jam |
Word Search | 2004-09-16 | find words hidden in a grid of letters |
A simple Font Viewer | 2004-10-22 | displays all fonts on your system |
Dynix2RSS | 2004-11-26 | produces an RSS feed for all your checked out library books |
TriPeaks Solitaire | 2004-11-29 | the TriPeak solitaire game |
Can You Read This? | 2004-12-18 | Deos letter oredr matter? |
WAV Dump | 2005-02-28 | Dumps out info about wav audio files |
XML Tree Walking | 2005-03-21 | Walks an XML dom tree built with tdom |
My House | 2005-06-15 | Can you find your house? |
BMP Dump | 2005-09-22 | Dups out info about bmp image files |
Hold'Em Solitaire | 2005-10-26 | A one-person Texas Hold'em diversion |
Simple Tktable | 2005-10-27 | A simpler replacement of tktable for simple tables |
3d Matrix Inversion | 2005-11-02 | routine that inverts 3x3 matrices |
Labyrinth | 2005-11-18 | a version of Junior Labyrinth board game |
Smallest Enclosing Disc | 2005-11-21 | Another geometric algorithm |
The Classic 15 Puzzle | 2005-12-07 | guess |
N-Puzzle | 2005-12-10 | Generalization of the 15-puzzle to any size |
Animated Circles | 2005-12-13 | fun little visual animation |
Wavy Text | 2005-12-13 | Animates some arbitrary text |
Mind Reader | 2005-12-15 | A little program proving the tcl can read minds |
Kandinsky Dance | 2005-12-24 | An animation of figures based on a painting by Wassily Kandinsky |
Spotlight | 2006-01-06 | Shines a spotlight on an image |
Magnifying Glass | 2006-01-06 | Aims a magnifying glass at an image |
Colliding Blocks | 2006-01-13 | A fun little arcade style game |
Lights On | 2006-02-09 | A game where you have to connect wires to light every node |
Ring Master | 2006-02-11 | puzzle with rotating numbers around three rings |
Capturing Multiple Screens | 2006-02-13 | package to capture screens larger than the display |
Shadow Photo | 2006-03-01 | displays an image with nice looking shadow border |
Photo Gallery | 2006-03-16 | shows a gallery of images which you can dynamically resize |
Montana Solitaire | 2006-04-28 | another solitaire card game |
Black Box | 2006-05-09 | plays the game Black Box |
Another Font Chooser Dialog | 2006-06-23 | my version of a font chooser dialog |
Dithering | 2006-07-22 | some dithering techniques and examples |
Gradient Spheres | 2006-08-16 | using gradients to create sphere shapes |
Geneva Drive | 2006-08-24 | animation of a Geneva Drive mechanism |
Vanishing Child | 2006-08-28 | A visual conundrum |
Gear Animation | 2006-08-30 | Animates interlocking gears |
Nice Numbers | 2006-09-01 | Two similar routines useful with graphs |
Reading BMP image dimensions | 2006-09-06 | pure tcl routine to read BMP image dimensions |
Chinese Checkers | 2006-09-06 | a version of the game chinese checkers |
Bulging Square Illusion | 2006-09-08 | an optical illusion |
Ribbon Graphs | 2006-09-27 | turning 2D line graphs into sexy 3D graphs |
Pulsing Squares | 2006-10-04 | an optical illusion |
Benford's Law | 2006-10-11 | a visualization of the counter-intuitive Benford's Law |
Word Chain | 2006-10-12 | computes cat-cot-cog-dog word chains |
Dice | 2006-10-21 | draws pretty playing dice |
Cubic Function Explorer | 2006-12-18 | plots the graph of some cubic equations |
Unzip in tcl | 2007-01-04 | a simple tcl-only version of unzip |
Crazy Eights | 2005-01-11 | plays the card game Crazy Eight's |
NOAA Weather Forecast | 2007-01-23 | displays the weather forecast from NOAA |
Crossword Puzzle Builder | 2007-02-08 | lets you create grids for crossword puzzles |
Solving Logic Puzzles | 2007-02-09 | solves one type of logic puzzles |
Cubic equation | 2003-02-26 | created the page, but I can't claim credit for the code |
A Hypertext Help System | 2007-06-27 | a nice, tcl only help system |
tclTiger | 2007-07-08 | interface to the TIGER GIS dataset from the US Census Bureau |
Image Fading | 2007-09-10 | hack to fade two images together |
Rotated Text Font | 2007-09-17 | another way to get rotated text |
Arbitrary Rectangle Selection | 2007-10-12 | grabs any (including any angle) rectangular area of a canvas |
Text2PDF | 2007-10-16 | package for converting text into PDF |
Parsing PDF | 2007-10-20 | code to parse and display PDF document and page information |
Celtic Braid | 2007-11-17 | draws an inter-woven pattern reminiscent of a Celtic braid |
Project Euler | 2008-01-25 | a web site [L1 ] with a series of really fun programming challenges |
Scotch Yoke | 2008-03-01 | animation of a Scotch Yoke, converting linear motion into rotary motion |
Tile Table | 2008-03-21 | yet another table widget, this one using tile's treeview widget |
Grid Debugger | 2008-04-09 | helps you solve grid layout problems |
Tk Robots | 2008-04-25 | plays the old UNIX robots game |
High Score Package | 2008-04-29 | package for showing, adding to and saving high scores for a game |
Tk Robots2 | 2008-04-29 | enhanced version of Tk Robots |
WhenIdle | 2008-05-06 | a way to run background commands when user is really idle |
VS Project List Editor | 2008-07-09 | lets you edit Visual Studio's project list |
Nonogram | 2008-07-28 | lets you solve nonogram logic puzzles |
Time Picker | 2008-10-08 | an interesting way to pick times |
GridLines | 2008-12-30 | another way of solving grid layout problems |
Canvas Annotations | 2009-04-15 | nice looking, moveable annotations for a canvas |
TkAsciiArt | 2009-07-27 | converts images into ASCII text |
Tk Dali Clock | 2009-08-31 | tk version of character morphing Dali clock |
CryptoAid | 2009-10-10 | tool to help you solve cryptograms |
TreeView Tooltips | 2009-11-07 | how to get tooltip events for a ttk::treeview widget |
Cribbage Crib Aid | 2009-02-18 | tool to help determine best discard in cribbage |
CheckedListBox Widget | 2010-03-24 | multi-column list of checkboxes |
ChooseDir | 2010-04-11 | a better looking version of tk_chooseDirectory |
Extensions to Plotchart 2 | 2010-04-20 | Another extension to Plotchart for ribbon x-y graphs |
Pythagoras Tree | 2010-06-02 | A fractal constructed from squares |
Slippy Map Demo | 2010-07-05 | How to use tcllib slippy module to show street maps |
GPX | 2010-07-08 | module to extract information from GPX (GPS eXchange) files |
Word Clock | 2010-07-22 | displays time in English text |
Mormon Porn | 2010-09-10 | lets your mind turns innocent, albeit racy pictures into a nudie picture |
Line Simplification | 2010-12-17 | demo of the Douglas-Peucker line simplification algorithm |
Integer Partition | 2011-04-01 | enumerates all integer partitions of a given number |
Bubble Letters | 2011-08-08 | transcribes text into unicode circled letters |
CPU Monitor | 2013-03-08 | visually shows activity for each cpu on your machine |
Nominatim Demo | 2013-03-12 | how to use tcllib's geocoding Nominatim module |
Celtic Knot | 2013-05-15 | draws ornamental Celtic Knots |
Reading WEBP image dimensions | 2013-06-01 | pure tcl routine to read WEBP image dimensions |
EpubCreator | 2014-03-14 | command line tool for creating an epub from a single file |
EpubDump | 2014-03-14 | displays the metadata associated with an epub |
Gmail Filters | 2014-04-08 | parse Gmail filters into csv format |
Flow Colors | 2014-04-23 | a simple yet addictive puzzle game |
PNG Dump | 2015-02-16 | displays detailed information about the chunks comprising a png image |
PNG Decoder | 2015-02-16 | tcl only png decoder |
Penrose Tiling | 2015-12-01 | play with Penrose non-periodic tiling of the plane |
1010! | 2016-03-25 | tcl version of the popular 1010! game |
Divisible by 7 | 2016-04-18 | simple, graphical toy to determine if a number is divisible by 7 |
Image Compare | 2016-04-26 | way to visually compare two images with a sliding bar between them |
Rubik's Cube Timer | 2016-05-22 | tool for timing Rubik's Cube solves |
Image Sizes | 2016-05-25 | command line tool for displaying the size of images |
Photo Crop | 2016-06-13 | tool to help crop images to 4x6 ratio |
Continued Fraction | 2016-06-15 | displays the continued fraction for any expression |
Image Viewer | 2016-06-16 | a simple, cross-platform image viewing tool |
Photo Album | 2016-07-22 | a way to lay out photos emulating a photo album |
Super SymDoodle | 2016-11-22 | extending A symmetric doodler to have multiple axes |
string mapx | 2017-08-10 | like string map but allowing the match to use regular expressions |
Clock of Clocks | 2017-09-09 | a clock animation using smaller clocks as pixels |
Solomon's Knot | 2017-04-07 | an updated version of my Celtic Braid allowing for more intertwining loops |
@decorators | 2018-05-03 | a tcl implementation of Python's decorator syntax |
Centered Coordinate System | 2018-06-04 | a snippet to move a canvas's origin to the middle of the widget |
Impossible Triangle | 2018-06-04 | draws an Impossible Triangle figure |
Tip #288 | 2018-08-15 | my tcl implementation Tip 288 -- Allow "args" Anywhere in Procedure Formal Arguments |
Tip #508 | 2018-08-15 | my tcl implementation Tip 508 -- New subcommand [array default] |
ao3 | 2018-08-31 | a scripted interface to the fan-fiction site Archive of Our Own |
ao3ToEpub | 2018-08-31 | a script that uses ao3 to download stories from fan-fiction site Archive of Our Own and turn them into epubs |
Enhanced Expression Syntax | 2018-09-26 | a tcl-only implementation of Tip 282. |
FamFamFam Demo | 2019-01-03 | displays all the icons in the FamFamFam icon set |
Spider Go | 2019-01-07 | a variant of Spider Solitaire with six columns and only King through 8 |
Magic Squares | 2019-01-18 | enumerate all unique 4x4 magic squares |
Filter Image fun | 2019-01-24 | tool for some simple filtering of an image |
Pretty Html | 2019-03-01 | an HTML formatter |
Razzle Dazzle | 2019-04-24 | a tcl version of the Razzle Dazzle carnival game |
Multi-column Listbox with Button | 2019-05-17 | a multi-column list box with the first column acting like a button |
Text Spinner | 2019-10-01 | package that provides 50+ types of text spinners |
OpenSky API | 2019-10-04 | scripting interface to OpenSky's live airspace information |
OpenSky App | 2019-10-17 | an application displaying live airspace info using the OpenSky API |
Jeopardy | 2019-11-06 | Play the tv game show Jeopardy |
Picture of the Day | 2023-08-28 | Downloads Wikipedia or Wikimedia Commons Picture of the Day |
Picture of the Day Demo | 2023-08-30 | Gui demo of the Picture of the Day module |
Emoji, Unicode and Variation Selectors | 2024-01-15 | An obscure Unicode way of getting some emoji |
DVD Logo Screensaver | 2024-02-05 | Emulates the bouncing DVD Video logo screensaver |
Dijkstra's Prime Algorithm | 2024-02-15 | An implementation of Dijkstra's algorithm to compute primes |
Hey Keith, thanks for sockspy. I used the starkit and for the very first time I could understand its use and see how cool it was in Windows. Thanks for all the hard work! --Ro
Been submitting your whizzlets to sdarchive and adding screen dumps, last one is the delightful "Juggler" - I hope that's ok with you... -jcw
LV Thank you so much for all your program contributions. It is developers like you which make Tcl such a fun community.
MG Hey Keith, just wanted to add my thanks for all the code you've added to the Wiki. I've used several of them in the last few days and saved a lot of time (and have ended up with better looking widgets than I'd have likely made on my own), so thanks :)