Jul-17-2018, 10:29 AM
Hi,
I'm a Python NOOB and I have an idea of that I'm trying to do but struggling to achieve end goal. I've found code (online - can't find the URL anymore since I acquired example) and the code works fine... click START/STOP/RESET/QUIT.
I've added an APPEND to file line in the STOP button function; the idea is to capture the time in a text file. I think I may need to convert the time to a string and capture that, but I'm struggling to find an example that works for me.
I am using Python 3.6.5... code below:
Any help would be appreciated... in the meantime, I have just started an intro Python course on Pluralsight.com
I'm a Python NOOB and I have an idea of that I'm trying to do but struggling to achieve end goal. I've found code (online - can't find the URL anymore since I acquired example) and the code works fine... click START/STOP/RESET/QUIT.
I've added an APPEND to file line in the STOP button function; the idea is to capture the time in a text file. I think I may need to convert the time to a string and capture that, but I'm struggling to find an example that works for me.
I am using Python 3.6.5... code below:
try: # for Python2 from Tkinter import * ## notice capitalized T in Tkinter except ImportError: # for Python3 from tkinter import * ## notice lowercase 't' in tkinter here import time class StopWatch(Frame): """ Implements a stop watch frame widget. """ def __init__(self, parent=None, **kw): Frame.__init__(self, parent, kw) self._start = 0.0 self._elapsedtime = 0.0 self._running = 0 self.timestr = StringVar() self.makeWidgets() def makeWidgets(self): """ Make the time label. """ l = Label(self, textvariable=self.timestr) self._setTime(self._elapsedtime) l.pack(fill=X, expand=NO, pady=2, padx=2) def _update(self): """ Update the label with elapsed time. """ self._elapsedtime = time.time() - self._start self._setTime(self._elapsedtime) self._timer = self.after(50, self._update) def _setTime(self, elap): """ Set the time string to Minutes:Seconds:Hundreths """ minutes = int(elap/60) seconds = int(elap - minutes*60.0) hseconds = int((elap - minutes*60.0 - seconds)*100) self.timestr.set('%02d:%02d:%02d' % (minutes, seconds, hseconds)) def Start(self): """ Start the stopwatch, ignore if running. """ if not self._running: self._start = time.time() - self._elapsedtime self._update() self._running = 1 def Stop(self): """ Stop the stopwatch, ignore if stopped. """ if self._running: self.after_cancel(self._timer) self._elapsedtime = time.time() - self._start self._setTime(self._elapsedtime) self._running = 0 #-------MY CODE INSERT------------------------------------------------------------- # save file # convert to string example = time str(example) repr(example) f = open("C:\pytest\stopwatch_test.txt","a") f.write(example) f.close() #-------------------------------------------------------------------- def Reset(self): """ Reset the stopwatch. """ self._start = time.time() self._elapsedtime = 0.0 self._setTime(self._elapsedtime) def main(): root = Tk() sw = StopWatch(root) sw.pack(side=TOP) Button(root, text='Start', command=sw.Start).pack(side=LEFT) Button(root, text='Stop', command=sw.Stop).pack(side=LEFT) Button(root, text='Reset', command=sw.Reset).pack(side=LEFT) Button(root, text='Quit', command=root.quit).pack(side=LEFT) root.mainloop() if __name__ == '__main__': main()I have tried a few things and keep coming back to self._elapsedtime & '%02d:%02d:%02d' % (minutes, seconds, hseconds))
Any help would be appreciated... in the meantime, I have just started an intro Python course on Pluralsight.com