summaryrefslogtreecommitdiff
path: root/ruby_1_8_6/ext/tk/sample/tktimer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_8_6/ext/tk/sample/tktimer.rb')
-rw-r--r--ruby_1_8_6/ext/tk/sample/tktimer.rb50
1 files changed, 50 insertions, 0 deletions
diff --git a/ruby_1_8_6/ext/tk/sample/tktimer.rb b/ruby_1_8_6/ext/tk/sample/tktimer.rb
new file mode 100644
index 0000000000..b1adb5b506
--- /dev/null
+++ b/ruby_1_8_6/ext/tk/sample/tktimer.rb
@@ -0,0 +1,50 @@
+#!/usr/bin/env ruby
+# This script generates a counter with start and stop buttons.
+
+require "tk"
+$label = TkLabel.new {
+ text '0.00'
+ relief 'raised'
+ width 10
+ pack('side'=>'bottom', 'fill'=>'both')
+}
+
+TkButton.new {
+ text 'Start'
+ command proc {
+ if $stopped
+ $stopped = FALSE
+ tick
+ end
+ }
+ pack('side'=>'left','fill'=>'both','expand'=>'yes')
+}
+TkButton.new {
+ text 'Stop'
+ command proc{
+ exit if $stopped
+ $stopped = TRUE
+ }
+ pack('side'=>'right','fill'=>'both','expand'=>'yes')
+}
+
+$seconds=0
+$hundredths=0
+$stopped=TRUE
+
+def tick
+ if $stopped then return end
+ Tk.after 50, proc{tick}
+ $hundredths+=5
+ if $hundredths >= 100
+ $hundredths=0
+ $seconds+=1
+ end
+ $label.text format("%d.%02d", $seconds, $hundredths)
+end
+
+root = Tk.root
+root.bind "Control-c", proc{root.destroy}
+root.bind "Control-q", proc{root.destroy}
+Tk.root.focus
+Tk.mainloop