diff --git a/projects/create a simple stopwatch/README.md b/projects/create a simple stopwatch/README.md new file mode 100644 index 00000000..074c958c --- /dev/null +++ b/projects/create a simple stopwatch/README.md @@ -0,0 +1,5 @@ +## create a simple stopwatch + +### usage + +python stopwatch.py \ No newline at end of file diff --git a/projects/create a simple stopwatch/stopwatch.py b/projects/create a simple stopwatch/stopwatch.py new file mode 100644 index 00000000..b456b192 --- /dev/null +++ b/projects/create a simple stopwatch/stopwatch.py @@ -0,0 +1,82 @@ +import tkinter as Tkinter +from datetime import datetime +import time +counter = 0 +running = False + + +def counter_label(label): + def count(): + if running: + global counter + # To manage the intial delay. + if counter == 0: + display = 'Ready!' + else: + tt = datetime.utcfromtimestamp(counter) + string = tt.strftime('%H:%M:%S') + display = string + + label['text'] = display + + # label.after(arg1, arg2) delays by + # first argument given in milliseconds + # and then calls the function given as second argument. + # Generally like here we need to call the + # function in which it is present repeatedly. + # Delays by 1000ms=1 seconds and call count again. + label.after(1000, count) + counter += 1 + + # Triggering the start of the counter. + count() + + +# start function of the stopwatch +def Start(label): + global running + running = True + counter_label(label) + start['state'] = 'disabled' + stop['state'] = 'normal' + reset['state'] = 'normal' + + +# Stop function of the stopwatch +def Stop(): + global running + start['state'] = 'normal' + stop['state'] = 'disabled' + reset['state'] = 'normal' + running = False + + +# Reset function of the stopwatch +def Reset(label): + global counter + counter = 0 + # If reset is pressed after pressing stop. + if not running: + reset['state'] = 'disabled' + label['text'] = '00:00:00' + # If reset is pressed while the stopwatch is running. + else: + label['text'] = '00:00:00' + + +root = Tkinter.Tk() +root.title("Stopwatch") + +# Fixing the window size. +root.minsize(width=250, height=70) +label = Tkinter.Label(root, text='Ready!', fg='black', font='Verdana 30 bold') +label.pack() +f = Tkinter.Frame(root) +start = Tkinter.Button(f, text='Start', width=6, command=lambda: Start(label)) +stop = Tkinter.Button(f, text='Stop', width=6, state='disabled', command=Stop) +reset = Tkinter.Button(f, text='Reset', width=6, state='disabled', command=lambda: Reset(label)) +f.pack(anchor='center', pady=5) +start.pack(side='left') +stop.pack(side='left') +reset.pack(side='left') +root.mainloop()