48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Tcl
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Tcl
		
	
	
	
	
	
| #!/bin/sh
 | |
| # the next line restarts using wish \
 | |
| exec wish "$0" ${1+"$@"}
 | |
| 
 | |
| # timer --
 | |
| # This script generates a counter with start and stop buttons.
 | |
| 
 | |
| package require Tk
 | |
| 
 | |
| label .counter -text 0.00 -relief raised -width 10 -padx 2m -pady 1m
 | |
| button .start -text Start -command {
 | |
|     if {$stopped} {
 | |
| 	set stopped 0
 | |
| 	set startMoment [clock clicks -milliseconds]
 | |
| 	tick
 | |
| 	.stop configure -state normal
 | |
| 	.start configure -state disabled
 | |
|     }
 | |
| }
 | |
| button .stop -text Stop -state disabled -command {
 | |
|     set stopped 1
 | |
|     .stop configure -state disabled
 | |
|     .start configure -state normal
 | |
| }
 | |
| pack .counter -side bottom -fill both
 | |
| pack .start -side left -fill both -expand yes
 | |
| pack .stop -side right -fill both -expand yes
 | |
| 
 | |
| set startMoment {}
 | |
| 
 | |
| set stopped 1
 | |
| 
 | |
| proc tick {} {
 | |
|     global startMoment stopped
 | |
|     if {$stopped} {return}
 | |
|     after 50 tick
 | |
|     set elapsedMS [expr {[clock clicks -milliseconds] - $startMoment}]
 | |
|     .counter config -text [format "%.2f" [expr {double($elapsedMS)/1000}]]
 | |
| }
 | |
| 
 | |
| bind . <Control-c> {destroy .}
 | |
| bind . <Control-q> {destroy .}
 | |
| focus .
 | |
| 
 | |
| # Local Variables:
 | |
| # mode: tcl
 | |
| # End:
 |