[Kevin Kenny] - Chia-Wei Chow wrote in news:comp.lang.tcl : ''I cannot turn the hands of a clock(gif file).'' Why a gif? Much easier with a canvas: grid [canvas .c -width 200 -height 200] set halfpi 1.570796 set piover6 0.5235987 set twopi 6.283185 .c create oval 2 2 198 198 -fill white -outline black for { set h 1 } { $h <= 12 } { incr h } { set angle [expr { $halfpi - $piover6 * $h }] set x [expr { 100 + 90 * cos($angle) }] set y [expr { 100 - 90 * sin($angle) }] .c create text $x $y -text $h -font {Helvetica -12} } proc hands {} { catch { .c delete withtag hands } # Compute seconds since midnight set s [expr { [clock seconds] - [clock scan 00:00:00] }] # Angle of second hand set angle [expr { $s * $::twopi / 60. }] set y [expr { 100 - 90 * cos($angle) }] set x [expr { 100 + 90 * sin($angle) }] .c create line 100 100 $x $y -width 1 -tags hands # Minute hand set angle [expr { $s * $::twopi / 60. / 60. }] set y [expr { 100 - 85 * cos($angle) }] set x [expr { 100 + 85 * sin($angle) }] .c create line 100 100 $x $y -width 3 -capstyle projecting -tags hands # Hour hand set angle [expr { $s * $::twopi / 60. / 60. / 12. }] set y [expr { 100 - 60 * cos($angle) }] set x [expr { 100 + 60 * sin($angle) }] .c create line 100 100 $x $y -width 7 -capstyle projecting -tags hands after 1000 hands } hands ---- [RS] Not matching the title, but here's a cute little digital clock I originally wrote for [Einfach Tcl]: proc every {ms body} { eval $body after $ms [list every $ms $body] } pack [label .clock -textvar time] every 1000 {set ::time [clock format [clock sec] -format %H:%M:%S]} ...and both combined in [A little A/D clock]. ---- [http://mini.net/files/bclock.jpg] [ALM] Neither matching the title, but nice too. A clock that shows the time in binary, that had its origin in [RS]'s little digital clock and some help from alfe@cs.tu-berlin.de. It's my first approach to tcl/tk, so I excuse myself in advance for my humble skills. - [RS]: Very cool, thanks for sharing this! set radius 35 wm title . "BClock, initializing..." wm maxsize . [expr $radius*6+1] [expr $radius*4+1] wm minsize . [expr $radius*6+1] [expr $radius*4+1] wm geometry . [expr $radius*6+1]x[expr $radius*4+1] pack [canvas .b -background black] foreach col {0 1 2 3 4 5} { foreach bit {0 1 2 3} { set x1 [expr $col * $radius] set y1 [expr $radius*3 - $bit * $radius] set x2 [expr $x1 + $radius] set y2 [expr $y1 + $radius] set layout(x${col}y${bit}) [.b create oval $x1 $y1 $x2 $y2] } } proc delay {ms body} { eval $body after $ms [list delay $ms $body] } delay 1000 { global layout set time [ clock format [ clock sec ] -format "%T" ] regexp {([0-2])([0-9]):([0-5])([0-9]):([0-5])([0-9])} \ $time -> h1 h2 m1 m2 s1 s2 wm title . "BClock, $time" set values [list $h1 $h2 $m1 $m2 $s1 $s2] foreach col {0 1 2 3 4 5} { set value [lindex $values $col] foreach bit {0 1 2 3} { if { $value & (1 << $bit) } { set colour IndianRed1 } else { set colour DarkRed } .b itemconfigure $layout(x${col}y${bit}) -fill $colour } } } ... and if you don't mind, mail ideas/corrections/additions to dondy at gmx dot de, as i don't come around much :)