HOME/Articles/

stopwatch

Article Outline

Example Python program stopwatch.py

Modules

  • import tkinter as Tkinter

Methods

  • def counter_label(label):
  • def count():
  • def Start(label):
  • def Stop():
  • def Reset(label):

Code

Python tkinter example

import tkinter as Tkinter

counter = -1
running = False


def counter_label(label):
    def count():
        if running:
            global counter

            # To manage the intial delay. 
            if counter == -1:
                display = "Starting..."
            else:
                display = str(counter)

            label['text'] = display  # Or label.config(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 = -1

    # If rest is pressed after pressing stop. 
    if running == False:
        reset['state'] = 'disabled'
        label['text'] = 'Welcome!'

    # If reset is pressed while the stopwatch is running. 
    else:
        label['text'] = 'Starting...'


root = Tkinter.Tk()
root.title("Stopwatch")

# Fixing the window size. 
root.minsize(width=250, height=70)
label = Tkinter.Label(root, text="Welcome!", fg="black", font="Verdana 30 bold")
label.pack()
start = Tkinter.Button(root, text='Start',
                       width=15, command=lambda: Start(label))
stop = Tkinter.Button(root, text='Stop',
                      width=15, state='disabled', command=Stop)
reset = Tkinter.Button(root, text='Reset',
                       width=15, state='disabled', command=lambda: Reset(label))
start.pack()
stop.pack()
reset.pack()
root.mainloop()