The tk canvas is a great thing: it is extremely flexible in order to implement all-you-could-imagine on top of it. Consider a graphical editor, in which the user edit a diagram composed by some kind of object (UML entities, ER entities, etc) and connectors that links these objects. In these situations, the implementor should write the diagram code over the tk canvas. While writing GNU Ferret (http://www.gnu.org/software/ferret) i felt the need for a library supporting diagrams on tk. So i wrote diagram.tcl A diagram is composed by objects and connectors. An object is composed by an arbitrary number of tagged canvas elements (text, lines, rectangles, etc). When you declare a new object, you also set a shape for it: rectangle, ovoid, romboid, etc. The shape do not need to be visible. Connectors are orthogonal editable paths of lines connecting diagram objects. Download the diagram package at: http://es.gnu.org/~jemarch/downloads/diagram.tcl