A stopwatch is used to measure the time interval between two events usually in seconds to minutes. It has various usage like in sports or measuring the flow of heat, current etc in an industrial setup. Python can be used to creat a stopwatch by using its tkinter library.
This library will have the GUI features to create a stopwatch showing the Start, Stop and Reset option. The key component of the program is using the lable.after() module of tkinter.
label.after(parent, ms, function = None) where parent: The object of the widget which is using this function. ms: Time in miliseconds. function: Call back function
In the below program we use this method as out key component of the program and design a widget showing the GUI features in the stopwatch.
Example
import tkinter as tink count = -1 run = False def var_name(mark): def value(): if run: global count # Just beore starting if count == -1: show = "Starting" else: show = str(count) mark['text'] = show #Increment the count after #every 1 second mark.after(1000, value) count += 1 value() # While Running def Start(mark): global run run = True var_name(mark) start['state'] = 'disabled' stop['state'] = 'normal' reset['state'] = 'normal' # While stopped def Stop(): global run start['state'] = 'normal' stop['state'] = 'disabled' reset['state'] = 'normal' run = False # For Reset def Reset(label): global count count = -1 if run == False: reset['state'] = 'disabled' mark['text'] = 'Welcome' else: mark['text'] = 'Start' base = tink.Tk() base.title("PYTHON STOPWATCH") base.minsize(width=300, height=200) mark = tink.Label(base, text="Welcome", fg="blue", font="Times 25 bold",bg="white") mark.pack() start = tink.Button(base, text='Start',width=25, command=lambda: Start(mark)) stop = tink.Button(base, text='Stop', width=25, state='disabled', command=Stop) reset = tink.Button(base, text='Reset',width=25, state='disabled', command=lambda: Reset(mark)) start.pack() stop.pack() reset.pack() base.mainloop()
The below images show the three different scenarios when the stopwatch is run.