{"id":85195,"date":"2021-09-29T09:00:05","date_gmt":"2021-09-29T03:30:05","guid":{"rendered":"https:\/\/techvidvan.com\/tutorials\/?p=85195"},"modified":"2026-06-03T15:31:13","modified_gmt":"2026-06-03T10:01:13","slug":"python-contact-book","status":"publish","type":"post","link":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/","title":{"rendered":"Create Contact Book in Python"},"content":{"rendered":"<p>In this Python project, we will build a GUI-based Contact Book using the Tkinter and sqlite libraries and the messagebox module. It is an advanced level project, and you will learn so many things that you will be able to apply in real life. Let\u2019s get started!\ud83d\ude0a<\/p>\n<h3>About Contact Books:<\/h3>\n<p>Do you remember those books where your parents used to store all their contacts\u2019 names, phone numbers, addresses, and even where they remember them from? Oh, those paper-y days.<\/p>\n<p>Today, we are going to create the same thing, except this one will be on your computer, with the data corresponding to the data from a database where you will store it.<\/p>\n<h3>About the project:<\/h3>\n<p>The objective of this is to create a GUI based Contact Book. To build this, you will need intermediate understanding of Tkinter and SQLite libraries, and only a basic understanding of the messagebox module. You will also need to have knowledge about the SQL commands: SELECT, INSERT, CREATE TABLE and DELETE.<\/p>\n<h3>Project Prerequisites:<\/h3>\n<p>To build this project, we will need the following libraries:<br \/>\n<strong>1. Tkinter<\/strong> &#8211; To create the GUI<br \/>\n<strong>2. SQLite (sqlite)<\/strong> &#8211; To connect to a SQL database and perform operations on the contacts.<\/p>\n<p>The Tkinter library comes pre-installed with Python, however the SQLite library does not. To install it, you will need to run the following command on your terminal.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">python -m pip install sqlite3\r\n<\/pre>\n<p>We need to \u201c3\u201d after sqlite to specify that we need the 3.x version (newer) of the sqlite library that corresponds with Python 3.x<\/p>\n<h3>Download Python Contact Book Project<\/h3>\n<p>Download source code of python contact book: <a href=\"https:\/\/drive.google.com\/file\/d\/1Z16gtW6rDb6dK0mJdveOY5fB9MBQsclV\/view?usp=drive_link\"><strong>Python Contact Book Project Code<\/strong><\/a><\/p>\n<h3>Project File Structure:<\/h3>\n<p>Here are the steps you will need to execute to build python address book project:<\/p>\n<p>1. Connecting to the database and initializing it.<br \/>\n2. Initializing the GUI window, placing the frames and header label and creating some commonly used variables [of this project].<br \/>\n3. Placing the components in the three frames.<br \/>\n4. Creating the functions for the buttons in the frames.<\/p>\n<p>Let\u2019s take a closer look at these steps:<\/p>\n<h4>1. Importing the necessary libraries and modules:<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">from tkinter import *\r\nimport tkinter.messagebox as mb\r\nimport sqlite3\r\n<\/pre>\n<h4>2. Connecting to the database and initializing it:<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Connecting and Initializing the Database where we will store all the data\r\nconnector = sqlite3.connect('contacts.db')\r\ncursor = connector.cursor()\r\n\r\ncursor.execute(\r\n\"CREATE TABLE IF NOT EXISTS CONTACT_BOOK (S_NO INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, NAME TEXT, EMAIL TEXT, PHONE_NUMBER TEXT, ADDRESS TEXT)\"\r\n)\r\n<\/pre>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>In this step, we will use the <em><strong>sqlite3.connect(\u2018&lt;database&gt;.db\u2019)<\/strong><\/em> function to create a database and connect it to the script and assign it to the variable connector.<\/li>\n<li>We will then create a cursor by using the connector.cursor() function and assigning it to the cursor variable.<\/li>\n<li>After that, using the CREATE TABLE statement of the sqlite3 API and the <em><strong>.execute()<\/strong><\/em> method of the cursor, we will create a database with the extension \u201c.db\u201d. The format for creating a new table is:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\"CREATE TABLE IF NOT EXISTS {Table Name} ({COLUMN1} {TYPE}, {COLUMN2} {TYPE} ....)\"\r\n<\/pre>\n<h4>3. Initializing the GUI window, placing the frames and header label and creating some commonly used variables:<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Initializing the GUI window\r\nroot = Tk()\r\nroot.title(\"TechVidvan Contact Book\")\r\nroot.geometry('700x550')\r\nroot.resizable(0, 0)\r\n\r\n# Creating the color and font variables\r\nlf_bg = 'Gray70'  # Lightest Shade\r\ncf_bg = 'Gray57'\r\nrf_bg = 'Gray35'  # Darkest Shade\r\nframe_font = (\"Garamond\", 14)\r\n\r\n# Creating the StringVar variables\r\nname_strvar = StringVar()\r\nphone_strvar = StringVar()\r\nemail_strvar = StringVar()\r\n\r\n# Creating and placing the components in the window\r\nLabel(root, text='CONTACT BOOK', font=(\"Noto Sans CJK TC\", 15, \"bold\"), bg='Black', fg='White').pack(side=TOP, fill=X)\r\n\r\n\r\n# Frame on the left\r\nleft_frame = Frame(root, bg=lf_bg) \r\nleft_frame.place(relx=0, relheight=1, y=30, relwidth=0.3)\r\n\r\n\r\n# Frame in the center\r\ncenter_frame = Frame(root, bg=cf_bg)\r\ncenter_frame.place(relx=0.3, relheight=1, y=30, relwidth=0.3)\r\n\r\n\r\n# Frame on the right\r\nright_frame = Frame(root, bg=rf_bg)\r\nright_frame.place(relx=0.6, relwidth=0.4, relheight=1, y=30)\r\n<\/pre>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>In this step, we will initialise the main GUI window and place some components in it. We will need to initialise some Tkinter elements and components.<\/li>\n<li>The <em><strong>left_frame<\/strong><\/em> will be the frame on the left which contains all the fields, namely \u201cName\u201d, \u201cPhone no\u201d, \u201cEmail\u201d, and \u201cAddress\u201d (this will be a Text widget) and the labels that act as a heading to these entry fields.<\/li>\n<li>The <em><strong>center_frame<\/strong><\/em> will be the frame where we place all the buttons to add a record, view a selected record, delete a record, clear all the entry fields in the left_frame, and delete all records.<\/li>\n<li>The <em><strong>right_frame<\/strong><\/em> will be the frame on the right side of the window which contains a Label saying \u201cSaved Contacts\u201d and a listbox that contains all the saved contacts in the database.<\/li>\n<\/ul>\n<h4>4. Placing the components in the three frames:<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Placing components in the left frame\r\nLabel(left_frame, text='Name', bg=lf_bg, font=frame_font).place(relx=0.3, rely=0.05)\r\n\r\nname_entry = Entry(left_frame, width=15, font=(\"Verdana\", 11), textvariable=name_strvar)\r\nname_entry.place(relx=0.1, rely=0.1)\r\n\r\nLabel(left_frame, text='Phone no.', bg=lf_bg, font=frame_font).place(relx=0.23, rely=0.2)\r\n\r\nphone_entry = Entry(left_frame, width=15, font=(\"Verdana\", 11), textvariable=phone_strvar)\r\nphone_entry.place(relx=0.1, rely=0.25)\r\n\r\nLabel(left_frame, text='Email', bg=lf_bg, font=frame_font).place(relx=0.3, rely=0.35)\r\n\r\nemail_entry = Entry(left_frame, width=15, font=(\"Verdana\", 11), textvariable=email_strvar)\r\nemail_entry.place(relx=0.1, rely=0.4)\r\n\r\nLabel(left_frame, text='Address', bg=lf_bg, font=frame_font).place(relx=0.28, rely=0.5)\r\n\r\naddress_entry = Text(left_frame, width=15, font=(\"Verdana\", 11), height=5)\r\naddress_entry.place(relx=0.1, rely=0.55)\r\n\r\n# Placing components in the Middle Frame\r\nsearch_entry = Entry(center_frame, width=18, font=(\"Verdana\", 12), textvariable=search_strvar).place(relx=0.08, rely=0.04)\r\n\r\nButton(center_frame, text='Search', font=frame_font, width=15, command=search).place(relx=0.13, rely=0.1)\r\nButton(center_frame, text='Add Record', font=frame_font, width=15, command=submit_record).place(relx=0.13, rely=0.2)\r\nButton(center_frame, text='View Record', font=frame_font, width=15, command=view_record).place(relx=0.13, rely=0.3)\r\nButton(center_frame, text='Clear Fields', font=frame_font, width=15, command=clear_fields).place(relx=0.13, rely=0.4)\r\nButton(center_frame, text='Delete Record', font=frame_font, width=15, command=delete_record).place(relx=0.13, rely=0.5)\r\nButton(center_frame, text='Delete All Records', font=frame_font, width=15, command=delete_all_records).place(relx=0.13, rely=0.6)\r\n\r\n# Placing components in the Right Frame\r\nLabel(right_frame, text='Saved Contacts', font=(\"Noto Sans CJK TC\", 14), bg=rf_bg).place(relx=0.25, rely=0.05)\r\n\r\nlistbox = Listbox(right_frame, selectbackground='SkyBlue', bg='Gainsboro', font=('Helvetica', 12), height=20, width=25)\r\nscroller = Scrollbar(listbox, orient=VERTICAL, command=listbox.yview)\r\nscroller.place(relx=0.93, rely=0, relheight=1)\r\nlistbox.config(yscrollcommand=scroller.set)\r\nlistbox.place(relx=0.1, rely=0.15)\r\n\r\nlist_contacts()\r\n<\/pre>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>In the left frame, we will go from top-to-bottom. We place the name label and entry field (manipulated by the name_strvar object) first, then we place the phone and email labels and entry fields (manipulated by phone_strvar and email_strvar objects respectively) respectively and address label and Text widget at the last.<\/li>\n<li>In the center frame, we will again go from top-to-bottom defining the buttons and search entry field.<\/li>\n<li>And in the right frame, we will add the \u201cSaved Contacts\u201d label first. Then we will add a listbox with a scrollbar packed to the right side of it. This controls the up and down movement of the listbox.<\/li>\n<\/ul>\n<h4>5. Creating the functions for the buttons in the frames:<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Defining the functions\r\ndef submit_record():\r\n    global name_strvar, email_strvar, phone_strvar, address_entry\r\n    global cursor\r\n    name, email, phone, address = name_strvar.get(), email_strvar.get(), phone_strvar.get(), address_entry.get(1.0, END)\r\n\r\n    if name=='' or email=='' or phone=='' or address=='':\r\n        mb.showerror('Error!', \"Please fill all the fields!\")\r\n    else:\r\n        cursor.execute(\r\n        \"INSERT INTO CONTACT_BOOK (NAME, EMAIL, PHONE_NUMBER, ADDRESS) VALUES (?,?,?,?)\", (name, email, phone, address))\r\n        connector.commit()\r\n        mb.showinfo('Contact added', 'We have stored the contact successfully!')\r\n        listbox.delete(0, END)\r\n        list_contacts()\r\n        clear_fields()\r\n\r\n\r\ndef list_contacts():\r\n    curr = connector.execute('SELECT NAME FROM CONTACT_BOOK')\r\n    fetch = curr.fetchall()\r\n\r\n    for data in fetch:\r\n        listbox.insert(END, data)\r\n\r\n\r\ndef delete_record():\r\n    global listbox, connector, cursor\r\n\r\n    if not listbox.get(ACTIVE):\r\n        mb.showerror(\"No item selected\", \"You have not selected any item!\")\r\n\r\n    cursor.execute('DELETE FROM CONTACT_BOOK WHERE NAME=?', (listbox.get(ACTIVE)))\r\n    connector.commit()\r\n\r\n    mb.showinfo('Contact deleted', 'The desired contact has been deleted')\r\n    listbox.delete(0, END)\r\n    list_contacts()\r\n\r\n\r\ndef delete_all_records():\r\n    cursor.execute('DELETE FROM CONTACT_BOOK')\r\n    connector.commit()\r\n\r\n    mb.showinfo(\"All records deleted\", \"All the records in your contact book have been deleted\")\r\n\r\n    listbox.delete(0, END)\r\n    list_contacts()\r\n\r\n\r\ndef view_record():\r\n    global name_strvar, phone_strvar, email_strvar, address_entry, listbox\r\n\r\n    curr = cursor.execute('SELECT * FROM CONTACT_BOOK WHERE NAME=?', listbox.get(ACTIVE))\r\n    values = curr.fetchall()[0]\r\n\r\n    name_strvar.set(values[1]); phone_strvar.set(values[3]); email_strvar.set(values[2])\r\n\r\n    address_entry.delete(1.0, END)\r\n    address_entry.insert(END, values[4])\r\n\r\n\r\ndef clear_fields():\r\n    global name_strvar, phone_strvar, email_strvar, address_entry, listbox\r\n\r\n    listbox.selection_clear(0, END)\r\n\r\n    name_strvar.set('')\r\n    phone_strvar.set('')\r\n    email_strvar.set('')\r\n    address_entry.delete(1.0, END)\r\n\r\ndef search():\r\n   query = str(search_strvar.get())\r\n\r\n   if query != '':\r\n       listbox.delete(0, END)\r\n\r\n       curr = connector.execute('SELECT * FROM CONTACT_BOOK WHERE NAME LIKE ?', ('%'+query+'%', ))\r\n       check = curr.fetchall()\r\n\r\n      for data in check:\r\n        listbox.insert(END, data[1])\r\n<\/pre>\n<p><strong>Explanation:<\/strong><\/p>\n<ul>\n<li>In the <em><strong>submit_record()<\/strong><\/em> function, we will first get all the necessary variables from the main script in the global scope. Then we will check whether or not all the entry fields were empty or not.<br \/>\nIf they are, we will display an error dialogue box. If they are not, we will move forward with dynamically inserting the entry fields\u2019 data using the INSERT statement of the SQLite3 API, executing it using the global scope cursor and then committing it to the connector using the .commit() method.<br \/>\nAfter that, we remove all the contacts in the listbox, only to replace them with an updated list that we will insert using the user-defined <em><strong>list_contacts()<\/strong><\/em> function we will discuss later.<\/li>\n<li>In the <strong><em>list_contacts()<\/em><\/strong> function, we get all the \u201cName\u201d values using the <strong>connector.execute()<\/strong> and the <strong>.fetchall()<\/strong> methods.<br \/>\nAfter this, we take all the values we got from the .fetchall() method and put them one-by-one in the listbox.<\/li>\n<li>In the <strong><em>delete_record()<\/em><\/strong> function, we delete the record from the database where the \u201cName\u201d is the same as the active\/selected element in the listbox.<\/li>\n<li>In the <strong><em>delete_records()<\/em><\/strong> function, we execute the \u201cDELETE FROM {Table Name}\u201d statement using the <strong>cursor.execute()<\/strong> and <strong>connector.commit()<\/strong> commands to delete the entire table and then delete everything in the listbox in the right frame.<\/li>\n<li>We use the SELECT command in the <strong><em>view_record()<\/em><\/strong> function to get the record that has the same \u201cName\u201d value as the selected element in the listbox.<br \/>\nThen we get the values in that record and one-by-one, set them in the suitable fields using the <strong>StringVar.set(f\u2018{value}\u2019)<\/strong> or the <strong>Text.insert(END, value)<\/strong> commands.<\/li>\n<li>In the <em><strong>clear_fields()<\/strong><\/em> function, we will simply get all StringVar objects and the Text widget and clear them all using either the <strong>StringVar.set(\u2018\u2019)<\/strong> or the <strong>Text.delete(1.0,<\/strong> <strong>END)<\/strong> methods.<\/li>\n<li>In the <strong>search()<\/strong> function, we will get the data to be searched from the entry field in the center frame, see if it is empty and if it isn\u2019t, we will use the SELECT command of the SQLite API to see if the data we have searched is present in the database or not.<br \/>\nIf the data is present, we will fetch it using the <strong>.fetchall()<\/strong> method of the <strong>curr<\/strong> object. Then we will list the names of the contacts in our database into our listbox that we cleared earlier.<\/li>\n<\/ul>\n<h3>Python Address Book Output<\/h3>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/09\/python-contact-book-output.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-85301\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/09\/python-contact-book-output.png\" alt=\"python contact book output\" width=\"876\" height=\"726\" \/><\/a><\/p>\n<h3>Summary<\/h3>\n<p>Congratulations! You have now created your own Contact Book using the Tkinter and SQLite libraries. Now you can have a copy of all the contact details of a person. You can use it in case you need to send them a postal mail, electronic mail or even a message.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this Python project, we will build a GUI-based Contact Book using the Tkinter and sqlite libraries and the messagebox module. It is an advanced level project, and you will learn so many things&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":85300,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1053],"tags":[3332,4382,4383,4384,483],"class_list":["post-85195","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-best-python-projects","tag-python-contact-book","tag-python-contact-book-project","tag-python-contact-book-project-source-code","tag-python-project"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Create Contact Book in Python - TechVidvan<\/title>\n<meta name=\"description\" content=\"Create your own Contact Book using the Tkinter and SQLite libraries of python. Have a copy of all the contact details of a person for any use\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create Contact Book in Python - TechVidvan\" \/>\n<meta property=\"og:description\" content=\"Create your own Contact Book using the Tkinter and SQLite libraries of python. Have a copy of all the contact details of a person for any use\" \/>\n<meta property=\"og:url\" content=\"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/\" \/>\n<meta property=\"og:site_name\" content=\"TechVidvan\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/TechVidvan\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-29T03:30:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-03T10:01:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/09\/python-project-contact-book.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"TechVidvan Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:site\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TechVidvan Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Create Contact Book in Python - TechVidvan","description":"Create your own Contact Book using the Tkinter and SQLite libraries of python. Have a copy of all the contact details of a person for any use","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/","og_locale":"en_US","og_type":"article","og_title":"Create Contact Book in Python - TechVidvan","og_description":"Create your own Contact Book using the Tkinter and SQLite libraries of python. Have a copy of all the contact details of a person for any use","og_url":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/","og_site_name":"TechVidvan","article_publisher":"https:\/\/www.facebook.com\/TechVidvan\/","article_published_time":"2021-09-29T03:30:05+00:00","article_modified_time":"2026-06-03T10:01:13+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/09\/python-project-contact-book.jpg","type":"image\/jpeg"}],"author":"TechVidvan Team","twitter_card":"summary_large_image","twitter_creator":"@vidvantech","twitter_site":"@vidvantech","twitter_misc":{"Written by":"TechVidvan Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/#article","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/"},"author":{"name":"TechVidvan Team","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22"},"headline":"Create Contact Book in Python","datePublished":"2021-09-29T03:30:05+00:00","dateModified":"2026-06-03T10:01:13+00:00","mainEntityOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/"},"wordCount":1173,"commentCount":0,"publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/09\/python-project-contact-book.jpg","keywords":["Best Python Projects","python contact book","python contact book project","python contact book project source code","Python project"],"articleSection":["Python Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/techvidvan.com\/tutorials\/python-contact-book\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/","url":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/","name":"Create Contact Book in Python - TechVidvan","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/#website"},"primaryImageOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/#primaryimage"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/09\/python-project-contact-book.jpg","datePublished":"2021-09-29T03:30:05+00:00","dateModified":"2026-06-03T10:01:13+00:00","description":"Create your own Contact Book using the Tkinter and SQLite libraries of python. Have a copy of all the contact details of a person for any use","breadcrumb":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/techvidvan.com\/tutorials\/python-contact-book\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/#primaryimage","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/09\/python-project-contact-book.jpg","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/09\/python-project-contact-book.jpg","width":1200,"height":628,"caption":"python project contact book"},{"@type":"BreadcrumbList","@id":"https:\/\/techvidvan.com\/tutorials\/python-contact-book\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/techvidvan.com\/tutorials\/"},{"@type":"ListItem","position":2,"name":"Create Contact Book in Python"}]},{"@type":"WebSite","@id":"https:\/\/techvidvan.com\/tutorials\/#website","url":"https:\/\/techvidvan.com\/tutorials\/","name":"TechVidvan Blogs","description":"","publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/techvidvan.com\/tutorials\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/techvidvan.com\/tutorials\/#organization","name":"TechVidvan","url":"https:\/\/techvidvan.com\/tutorials\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","width":200,"height":50,"caption":"TechVidvan"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/TechVidvan\/","https:\/\/x.com\/vidvantech"]},{"@type":"Person","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22","name":"TechVidvan Team","description":"The TechVidvan Team delivers practical, beginner-friendly tutorials on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our experts are here to help you upskill and excel in today\u2019s tech industry."}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/85195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/comments?post=85195"}],"version-history":[{"count":2,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/85195\/revisions"}],"predecessor-version":[{"id":448092,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/85195\/revisions\/448092"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media\/85300"}],"wp:attachment":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media?parent=85195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/categories?post=85195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/tags?post=85195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}