In this post, we will see how to create a Counter Gui Application in Python using tkinter library.
Steps to create GUI application :
- Create a front-end structure (GUI) of your application.
- Implement the working of the application in form of functions.
- Attach functions to the GUI like attach with buttons etc.
Let’s see the Implementation:
# Import all from tkinter
# to this program
from tkinter import *
# Declare global variable
window = None
counter = 0
# Define a function for
# starting the counter
def start() :
# we specify that we want to
# use global counter variable
# using global keyword
global counter
# Create a label using Label() widget
# with foreground and background
# colours
counterLabel = Label(window, fg = 'red',
bg = 'pink')
# Place this widget in grid at (2, 2)
# with internal x(horizontal) and y(vertical)
# extra space from the text written in label
# Also with x and y extra space from the
# given widget
counterLabel.grid(row = 2, column = 2,
ipadx = "25", ipady = "25",
padx = "25", pady = "25")
# increment the counter by one
counter += 1
# set the text value in the label
# using config() method
counterLabel.config(text = str(counter))
# calling start function on every
# 1000 millisecond i.e. 1sec
# using after() method
counterLabel.after(1000, start)
# Get a text from statusfield
# entry box using get() method
val = statusField.get()
# if value match with "Stop"
# then destroy this label
# ,delete the content
# of entry field and
# decrement the counter value by 1
if val == "Stop" :
counterLabel.destroy()
statusField.delete(0,"end")
counter -= 1
# Define a function for
# stoping the counter
def stop() :
# we specify that we want to
# use global counter variable
# using global keyword
global counter
# Create a label using Label() widget
# with foreground, background
# colours and text value on the label
counterLabel = Label(window, text = str(counter),
fg = 'red', bg = 'black')
# Place this widget in grid at (2, 2)
# along with specified padding
counterLabel.grid(row = 2, column = 2,
ipadx = "25", ipady = "25",
padx = "25", pady = "25")
# insert the "Stop" string
# value inside the
# statusField entry box
statusField.insert(0,"Stop")
# Define a function for
# reset the counter
def reset() :
# we specify that we want to
# use global counter variable
# using global keyword
global counter
# set counter value to 0
counter = 0
# Create a label using Label() widget
# with foreground, background
# colours and text value on the label
counterLabel = Label(window, text = str(counter),
fg = 'black', bg = 'green')
# Place this widget in grid at (2, 2)
# along with specified padding
counterLabel.grid(row = 2, column = 2,
ipadx = "25", ipady = "25",
padx = "25", pady = "25")
# Main code
if __name__ == "__main__" :
# Create a window container
window = Tk()
# Set background colour of window
# container using configure() method
# with background attribute
window.configure(background = 'light green')
# Set the configuration of window
# container using geometry() method
# width X length
window.geometry("300x200")
# Set the title of window container
# using title() method
window.title("Counter GUI")
# Create a label using Label() widget
counterLabel = Label(window, text = str(counter),
fg = 'black', bg = 'green')
# Placing the widgets at respective
# positions in table like structure
# using grid() method
# Place this widget in grid at (2, 2)
counterLabel.grid(row = 2, column = 2,
ipadx = "25", ipady = "25",
padx = "25", pady = "25")
# Create a Button and attached
# function using Button() widget
startButton = Button(window, text = "Start",
bg = "red", fg = "black",
command = start)
# Place button widget in grid at (3, 1)
startButton.grid(row = 3, column = 1,
padx = "25", ipadx = "10")
# Create a Button and attached
# function using Button() widget
stopButton = Button(window, text = "Stop",
bg = "red", fg = "black",
command = stop)
# Place button widget in grid at (3, 2)
stopButton.grid(row = 3, column = 2,
ipadx = "10")
# Create a Button and attached
# function using Button() widget
resetButton = Button(window, text = "Reset",
bg = "red", fg = "black",
command = reset)
# Place button widget in grid at (3, 3)
resetButton.grid(row = 3, column = 3,
ipadx = "10")
# we will not attach this widget to the window
# because we don't want to place it
# this is used for only stoping and starting
# the counter as a flag
# Create text entry box for : status field
statusField = Entry(window)
# Start the window,
# waiting for events and
# updating the GUI.
window.mainloop()
Output:


Thanks for reading this blog.
If you find this post useful please share it in your groups because Sharing is Caring.
If you have any doubts in understanding the above Code then please comment below, we will try to clear your doubts.
Would it be possible/relatively easy to build a code that increases multiple counts based on the click of an “increase button”. Then can reset individual counts based on a button adjacent to each fields count. Which would then wait to increase until the increase button for all fields is clicked twice?