Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Cronometro - crono.rb

crono.rb

Caricato da: Poggi Marco
Scarica il programma completo

  1. require 'tk'
  2. load 'tempo.rb'
  3.  
  4. class App
  5.  
  6.         def initialize()
  7.                 @misura=Tempo::Tempistica.new()
  8.                 @radice=TkRoot.new()  
  9.                 inizializzaComponenti()
  10.                 @radice.mainloop()
  11.         end
  12.  
  13.         def inizializzaComponenti()
  14.                 mioFont='consolas 12'
  15.  
  16.                 #labCrono
  17.                 @labCrono=TkLabel.new(@radice)
  18.                 @labCrono['font']='consolas 18'
  19.                 @labCrono['bg']='#220010'
  20.                 @labCrono['fg']='#10ca10'
  21.                 @labCrono['text']=@misura.comunica()
  22.                 @labCrono['relief']='groove'
  23.                 @labCrono.place('x' => 60, 'y' => 10)
  24.  
  25.                 #btnAvvio
  26.                 @btnAvvio=TkButton.new(@radice)
  27.                 @btnAvvio['font']=mioFont
  28.                 @btnAvvio['width']=7
  29.                 @btnAvvio['height']=1
  30.                 @btnAvvio['text']='Avvio'
  31.                 @btnAvvio['command']=proc {self.avviaCrono}
  32.                 @btnAvvio.place('x' => 10, 'y' => 55)
  33.  
  34.                 #btnArresta
  35.                 @btnArresta=TkButton.new(@radice)
  36.                 @btnArresta['font']=mioFont
  37.                 @btnArresta['width']=9
  38.                 @btnArresta['height']=1
  39.                 @btnArresta['text']='Arresta'
  40.                 @btnArresta['command']=proc {self.arrestaCrono}
  41.                 @btnArresta.place('x' => 160, 'y' => 55)
  42.  
  43.                 #btnParziali
  44.                 @btnParziali=TkButton.new(@radice)
  45.                 @btnParziali['font']=mioFont
  46.                 @btnParziali['width']=10
  47.                 @btnParziali['height']=1
  48.                 @btnParziali['text']='Parziale'
  49.                 @btnParziali['command']=proc {self.mostraTempoParziale}
  50.                 @btnParziali.place('x' => 10, 'y' => 100)
  51.  
  52.                 #btnRiporti
  53.                 @btnRiporti=TkButton.new(@radice)
  54.                 @btnRiporti['font']=mioFont
  55.                 @btnRiporti['width']=12
  56.                 @btnRiporti['height']=1
  57.                 @btnRiporti['text']='Ripartenza'
  58.                 @btnRiporti['command']=proc {self.riAvviaCrono}
  59.                 @btnRiporti.place('x' => 130, 'y' => 100)
  60.  
  61.                 #lab1
  62.                 @lab1=TkLabel.new(@radice)
  63.                 @lab1['font']=mioFont
  64.                 @lab1['justify']='left'
  65.                 @lab1['text']='Tempi parziali'
  66.                 @lab1.place('x' => 10, 'y' => 140)
  67.  
  68.                 #labParziali
  69.                 @labParziali=TkLabel.new(@radice)
  70.                 @labParziali['font']=mioFont
  71.                 @labParziali['text']=''
  72.                 @labParziali['justify']='left'
  73.                 @labParziali.place('x' => 10, 'y' => 160)
  74.  
  75.                 @radice['title']='Cronometro'
  76.                 @radice['width']=270
  77.                 @radice['height']=390
  78.         end
  79.  
  80.         def avviaCrono()
  81.                 if @misura.stato()
  82.                         @labParziali['text']="%s%c%s ripartenza" % [@labParziali['text'], 10.chr, @misura.comunica()]
  83.                 end
  84.                 @misura.avvia(false)
  85.                 self.mostraTempo()
  86.         end    
  87.  
  88.         def riAvviaCrono()
  89.                 if not @misura.stato()
  90.                         @misura.avvia(true)
  91.                         self.mostraTempo()
  92.                 end
  93.         end
  94.  
  95.         def mostraTempoParziale()
  96.                 if @misura.stato()
  97.                         @labParziali['text']="%s%c%s Parziale" % [@labParziali['text'], 10.chr, @misura.comunica()]
  98.                 end
  99.         end
  100.  
  101.         def arrestaCrono()
  102.                 if @misura.stato()
  103.                         @labParziali['text']='%s%c%s arresto' % [@labParziali['text'], 10.chr, @misura.comunica()]
  104.                 end
  105.                 @misura.arresta()
  106.         end
  107.  
  108.         def mostraTempo()  
  109.                 if @misura.stato
  110.                         @labCrono['text']=@misura.comunica()
  111.                         sleep(0.1)
  112.                         Thread.new{mostraTempo}
  113.                 end
  114.         end
  115.  
  116. end
  117.  
  118. puts "Cronometro con funzioni di avvio, arresto, tempi parziali e ripartenza"
  119.  
  120. App.new()