Prerequisite: Tkinter
In this article, we will discuss how to create an address book in Tkinter using Python.
Step by step implementation:
Step 1: Creating GUI.
In this, we will add all the GUI Components like labels, text area and buttons.
Python3
# Import Module from tkinter import * # Create Object root = Tk() # Set geometry root.geometry( '400x500' ) # Add Buttons, Label, ListBox Name = StringVar() Number = StringVar() frame = Frame() frame.pack(pady = 10 ) frame1 = Frame() frame1.pack() frame2 = Frame() frame2.pack(pady = 10 ) Label(frame, text = 'Name' , font = 'arial 12 bold' ).pack(side = LEFT) Entry(frame, textvariable = Name,width = 50 ).pack() Label(frame1, text = 'Phone No.' , font = 'arial 12 bold' ).pack(side = LEFT) Entry(frame1, textvariable = Number,width = 50 ).pack() Label(frame2, text = 'Address' , font = 'arial 12 bold' ).pack(side = LEFT) address = Text(frame2,width = 37 ,height = 10 ) address.pack() Button(root,text = "Add" ,font = "arial 12 bold" ).place(x = 100 , y = 270 ) Button(root,text = "View" ,font = "arial 12 bold" ).place(x = 100 , y = 310 ) Button(root,text = "Delete" ,font = "arial 12 bold" ).place(x = 100 , y = 350 ) Button(root,text = "Reset" ,font = "arial 12 bold" ).place(x = 100 , y = 390 ) scroll_bar = Scrollbar(root, orient = VERTICAL) select = Listbox(root, yscrollcommand = scroll_bar. set , height = 12 ) scroll_bar.config (command = select.yview) scroll_bar.pack(side = RIGHT, fill = Y) select.place(x = 200 ,y = 260 ) # Execute Tkinter root.mainloop() |
Output:
Step 2: Creating User define function to retrieve the operation.
These are function are used in this program:
- add: This will add a record in the address book data structure and update the GUI.
- view: This will represent all the values of the selected record.
- delete: This will delete the selected record from the address book data structure and update the GUI.
- reset: This will reset all the input values of the input parameters.
- update_book: This will update the whole address book data structure.
Python3
# Information List datas = [] # Add Information def add(): global datas datas.append([Name.get(),Number.get(),address.get( 1.0 , "end-1c" )]) update_book() # View Information def view(): Name. set (datas[ int (select.curselection()[ 0 ])][ 0 ]) Number. set (datas[ int (select.curselection()[ 0 ])][ 1 ]) address.delete( 1.0 , "end" ) address.insert( 1.0 , datas[ int (select.curselection()[ 0 ])][ 2 ]) # Delete Information def delete(): del datas[ int (select.curselection()[ 0 ])] update_book() def reset(): Name. set ('') Number. set ('') address.delete( 1.0 , "end" ) # Update Information def update_book(): select.delete( 0 ,END) for n,p,a in datas: select.insert(END, n) |
Complete Code:
Python3
# Import Module from tkinter import * # Create Object root = Tk() # Set geometry root.geometry( '400x500' ) # Information List datas = [] # Add Information def add(): global datas datas.append([Name.get(),Number.get(),address.get( 1.0 , "end-1c" )]) update_book() # View Information def view(): Name. set (datas[ int (select.curselection()[ 0 ])][ 0 ]) Number. set (datas[ int (select.curselection()[ 0 ])][ 1 ]) address.delete( 1.0 , "end" ) address.insert( 1.0 , datas[ int (select.curselection()[ 0 ])][ 2 ]) # Delete Information def delete(): del datas[ int (select.curselection()[ 0 ])] update_book() def reset(): Name. set ('') Number. set ('') address.delete( 1.0 , "end" ) # Update Information def update_book(): select.delete( 0 ,END) for n,p,a in datas: select.insert(END, n) # Add Buttons, Label, ListBox Name = StringVar() Number = StringVar() frame = Frame() frame.pack(pady = 10 ) frame1 = Frame() frame1.pack() frame2 = Frame() frame2.pack(pady = 10 ) Label(frame, text = 'Name' , font = 'arial 12 bold' ).pack(side = LEFT) Entry(frame, textvariable = Name,width = 50 ).pack() Label(frame1, text = 'Phone No.' , font = 'arial 12 bold' ).pack(side = LEFT) Entry(frame1, textvariable = Number,width = 50 ).pack() Label(frame2, text = 'Address' , font = 'arial 12 bold' ).pack(side = LEFT) address = Text(frame2,width = 37 ,height = 10 ) address.pack() Button(root,text = "Add" ,font = "arial 12 bold" ,command = add).place(x = 100 , y = 270 ) Button(root,text = "View" ,font = "arial 12 bold" ,command = view).place(x = 100 , y = 310 ) Button(root,text = "Delete" ,font = "arial 12 bold" ,command = delete).place(x = 100 , y = 350 ) Button(root,text = "Reset" ,font = "arial 12 bold" ,command = reset).place(x = 100 , y = 390 ) scroll_bar = Scrollbar(root, orient = VERTICAL) select = Listbox(root, yscrollcommand = scroll_bar. set , height = 12 ) scroll_bar.config (command = select.yview) scroll_bar.pack(side = RIGHT, fill = Y) select.place(x = 200 ,y = 260 ) # Execute Tkinter root.mainloop() |
Output: