Advertisement
Guest User

stopwatch python

a guest
Jul 19th, 2011
907
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.08 KB | None | 0 0
  1. #! /usr/bin/python
  2. # Author : Morten Klim Sørensen - mail@kl1m.dk
  3. # Created: 2011 Jul 17
  4. # Filename: stopwatch2.py
  5. # Description:
  6.  
  7. from tkinter import *
  8. import time
  9. import pickle
  10. from datetime import datetime
  11.  
  12. DataFile = 'Tider.txt'
  13. class StopWatch(Frame):  
  14.     """ Implements a stop watch frame widget. """                                                                
  15.     def __init__(self, parent=None, **kw):        
  16.         Frame.__init__(self, parent, kw)
  17.         self._start = 0.0        
  18.         self._elapsedtime = 0.0
  19.         self._pausestart = 0.0
  20.         self._elapsedpause = 0.0
  21.         self._running = 0
  22.         self.timestr = StringVar()              
  23.         self.makeWidgets()      
  24.  
  25.     def makeWidgets(self):                        
  26.         """ Make the time label. """
  27.         l = Label(self, textvariable=self.timestr)
  28.         self._setTime(self._elapsedtime)
  29.         l.grid(row=0)
  30.    
  31.     def _update(self):
  32.         """ Update the label with elapsed time. """
  33.         self._elapsedtime = time.time() - self._start
  34.         self._setTime(self._elapsedtime)
  35.         self._timer = self.after(50, self._update)
  36.    
  37.     def _updatepause(self):
  38.         self._elapsedpause = time.time() - self._pausestart
  39.         self._setTime(self._elapsedpause)
  40.         self._timer = self.after(50, self._updatepause)
  41.    
  42.     def _setTime(self, elap):
  43.         """ Set the time string to Hours:Minutes:Seconds """
  44.         hours = int(elap/60/60)
  45.         if hours >= 1:
  46.             minutes = int(elap/60 - hours*60.0)
  47.             seconds = int(elap - 3600*hours - (minutes * 60))
  48.         else:
  49.             minutes = int(elap/60)
  50.             seconds = int(elap - minutes*60.0)
  51.         #mseconds = int((elap - minutes*60.0 - seconds)*100)                
  52.         self.timestr.set('%02d:%02d:%02d' % (hours, minutes, seconds))
  53.        
  54.     def Start(self):                                                    
  55.         """ Start the stopwatch, ignore if running. """
  56.         if not self._running:            
  57.             self._start = time.time() - self._elapsedtime
  58.             self._update()
  59.             self._running = 1        
  60.    
  61.     def Stop(self):                                    
  62.         """ Stop the stopwatch, ignore if stopped. """
  63.         if self._running:
  64.             self.after_cancel(self._timer)            
  65.             self._elapsedtime = time.time() - self._start
  66.             self._setTime(self._elapsedtime)
  67.             self._running = 0
  68.  
  69.             self._pausestart = time.time() - self._elapsedpause
  70.             self._updatepause()
  71.    
  72.     def Reset(self):                                  
  73.         """ Reset the stopwatch. """
  74.         self._start = time.time()        
  75.         self._elapsedtime = 0.0    
  76.         self._setTime(self._elapsedtime)
  77.  
  78.     def Export(self):
  79.         """ Export date and time elapsed to file """
  80.         current_file = ""
  81.         try:
  82.             current_file = pickle.load( open(DataFile, 'rb') )
  83.         except:
  84.             print("File Not Found")
  85.  
  86.         print(self._pausestart)
  87.         print(self._elapsedpause)
  88.         hours = int(self._elapsedtime/60/60)
  89.         minutes = int(self._elapsedtime/60 - hours*60.0)
  90.         f = open(DataFile, 'wb')
  91.         pickle.dump(current_file + "\n" + time.strftime("%d-%m-%Y") + " - Arbejdstimer: {0}t:{1}m  |  Pause: {2}\n".format(str(hours), str(minutes), str("42")), f)
  92.         f.close()
  93.        
  94.        
  95. def main():
  96.     root = Tk()
  97.     root.title("Det gode stopur")
  98.     sw = StopWatch(root)
  99.     sw.grid(row=0, columnspan=4)
  100.  
  101.     Button(root, text='Start', command=sw.Start).grid(row=1, column=0)
  102.     Button(root, text='Pause', command=sw.Stop).grid(row=1, column=1)
  103.     Button(root, text='Reset', command=sw.Reset).grid(row=1, column=2)
  104.     Button(root, text='Quit', command=root.quit).grid(row=1, column=3)
  105.     Button(root, text='Export', command=sw.Export).grid(row=2, column=1)
  106.  
  107.     Label(root, text="Morten Klim Sørensen - www.kl1m.dk").grid(row=3, columnspan=4)
  108.    
  109.     root.mainloop()
  110.  
  111. if __name__ == '__main__':
  112.     main()
  113.  
  114. # End of stopwatch2.py
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement