Vidyavardhini’s College of Engineering & Technology
Department of Computer Engineering
Experiment No. 7
Creating GUI with python containing widgets such as labels,
textbox, radio, checkboxes and custom dialog boxes
Date of Performance: 24/02/2025
Date of Submission:10/03/2025
Experiment No. 7
Title: Creating GUI with python containing widgets such as labels, textbox, radio,
checkboxes and custom dialog boxes
Aim: To study and create GUI with python containing widgets such as labels, textbox, radio,
checkboxes and custom dialog boxes
Objective: To introduce GUI, TKinter in python
Theory:
Python offers multiple options for developing GUI (Graphical User Interface). Out of all the
GUI methods, tkinter is the most commonly used method. It is a standard Python interface to
the Tk GUI toolkit shipped with Python. Python with tkinter is the fastest and easiest way to
create the GUI applications. Creating a GUI using tkinter is an easy task.
To create a tkinter app:
Importing the module – tkinter
Create the main window (container)
Add any number of widgets to the main window
Apply the event Trigger on the widgets.
Importing tkinter is same as importing any other module in the Python code. Note that the
name of the module in Python 2.x is ‘Tkinter’ and in Python 3.x it is ‘tkinter’.
Vidyavardhini’s College of Engineering & Technology
Department of Computer Engineering
Implementation :
from tkinter import *
win = Tk() # This is to create a basic window
win.geometry("312x324") # this is for the size of the window
win.resizable(0, 0) # this is to prevent from resizing the window
win.title("Calculator")
###################Starting with functions ####################
# 'btn_click' function :
# This Function continuously updates the
# input field whenever you enter a number
def btn_click(item):
global expression
expression = expression + str(item)
input_text.set(expression)
# 'bt_clear' function :This is used to clear
# the input field
def bt_clear():
global expression
expression = ""
input_text.set("")
# 'bt_equal':This method calculates the expression
# present in input field
def bt_equal():
global expression
result = str(eval(expression)) # 'eval':This function is used to evaluates the string
expression directly
input_text.set(result)
expression = ""
expression = ""
# 'StringVar()' :It is used to get the instance of input field
Vidyavardhini’s College of Engineering & Technology
Department of Computer Engineering
input_text = StringVar()
# Let us creating a frame for the input field
input_frame = Frame(win, width=312, height=50, bd=0, highlightbackground="black",
highlightcolor="black", highlightthickness=2)
input_frame.pack(side=TOP)
#Let us create a input field inside the 'Frame'
input_field = Entry(input_frame, font=('arial', 18, 'bold'), textvariable=input_text, width=50,
bg="#eee", bd=0, justify=RIGHT)
input_field.grid(row=0, column=0)
input_field.pack(ipady=10) # 'ipady' is internal padding to increase the height of input field
#Let us creating another 'Frame' for the button below the 'input_frame'
btns_frame = Frame(win, width=312, height=272.5, bg="grey")
btns_frame.pack()
# first row
clear = Button(btns_frame, text = "C", fg = "black", width = 32, height = 3, bd = 0, bg =
"#eee", cursor = "hand2", command = lambda: bt_clear()).grid(row = 0, column = 0,
columnspan = 3, padx = 1, pady = 1)
divide = Button(btns_frame, text = "/", fg = "black", width = 10, height = 3, bd = 0, bg =
"#eee", cursor = "hand2", command = lambda: btn_click("/")).grid(row = 0, column = 3, padx
= 1, pady = 1)
# second row
seven = Button(btns_frame, text = "7", fg = "black", width = 10, height = 3, bd = 0, bg =
"#fff", cursor = "hand2", command = lambda: btn_click(7)).grid(row = 1, column = 0, padx =
1, pady = 1)
Vidyavardhini’s College of Engineering & Technology
Department of Computer Engineering
eight = Button(btns_frame, text = "8", fg = "black", width = 10, height = 3, bd = 0, bg =
"#fff", cursor = "hand2", command = lambda: btn_click(8)).grid(row = 1, column = 1, padx =
1, pady = 1)
nine = Button(btns_frame, text = "9", fg = "black", width = 10, height = 3, bd = 0, bg =
"#fff", cursor = "hand2", command = lambda: btn_click(9)).grid(row = 1, column = 2, padx =
1, pady = 1)
multiply = Button(btns_frame, text = "*", fg = "black", width = 10, height = 3, bd = 0, bg =
"#eee", cursor = "hand2", command = lambda: btn_click("*")).grid(row = 1, column = 3,
padx = 1, pady = 1)
# third row
four = Button(btns_frame, text = "4", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff",
cursor = "hand2", command = lambda: btn_click(4)).grid(row = 2, column = 0, padx = 1,
pady = 1)
five = Button(btns_frame, text = "5", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff",
cursor = "hand2", command = lambda: btn_click(5)).grid(row = 2, column = 1, padx = 1,
pady = 1)
six = Button(btns_frame, text = "6", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff",
cursor = "hand2", command = lambda: btn_click(6)).grid(row = 2, column = 2, padx = 1,
pady = 1)
minus = Button(btns_frame, text = "-", fg = "black", width = 10, height = 3, bd = 0, bg =
"#eee", cursor = "hand2", command = lambda: btn_click("-")).grid(row = 2, column = 3,
padx = 1, pady = 1)
# fourth row
one = Button(btns_frame, text = "1", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff",
cursor = "hand2", command = lambda: btn_click(1)).grid(row = 3, column = 0, padx = 1,
pady = 1)
two = Button(btns_frame, text = "2", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff",
cursor = "hand2", command = lambda: btn_click(2)).grid(row = 3, column = 1, padx = 1,
pady = 1)
Vidyavardhini’s College of Engineering & Technology
Department of Computer Engineering
three = Button(btns_frame, text = "3", fg = "black", width = 10, height = 3, bd = 0, bg =
"#fff", cursor = "hand2", command = lambda: btn_click(3)).grid(row = 3, column = 2, padx =
1, pady = 1)
plus = Button(btns_frame, text = "+", fg = "black", width = 10, height = 3, bd = 0, bg =
"#eee", cursor = "hand2", command = lambda: btn_click("+")).grid(row = 3, column = 3,
padx = 1, pady = 1)
zero = Button(btns_frame, text = "0", fg = "black", width = 21, height = 3, bd = 0, bg =
"#fff", cursor = "hand2", command = lambda: btn_click(0)).grid(row = 4, column = 0,
columnspan = 2, padx = 1, pady = 1)
point = Button(btns_frame, text = ".", fg = "black", width = 10, height = 3, bd = 0, bg =
"#eee", cursor = "hand2", command = lambda: btn_click(".")).grid(row = 4, column = 2, padx
= 1, pady = 1)
equals = Button(btns_frame, text = "=", fg = "black", width = 10, height = 3, bd = 0, bg =
"#eee", cursor = "hand2", command = lambda: bt_equal()).grid(row = 4, column = 3, padx =
1, pady = 1)
win.mainloop()
Vidyavardhini’s College of Engineering & Technology
Department of Computer Engineering
Conclusion:
TKinter, the standard GUI toolkit for Python, provides an easy and efficient way to develop
graphical user interfaces. By studying and implementing TKinter, various essential widgets
such as labels, textboxes, radio buttons, checkboxes, and custom dialog boxes have been
explored. Understanding the event-driven programming model in TKinter enables the
creation of interactive and user-friendly applications. The practical implementation of
TKinter strengthens GUI development skills and enhances the ability to build desktop
applications. Overall, mastering TKinter is a valuable step towards creating dynamic and
functional Python-based GUI applications.