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
