Adventures in Machine Learning

Building a Contact Book App with Python and PyQt: A Beginner’s Guide

Programming can be a daunting concept to learn, but it can also be incredibly rewarding. One of the best methods of learning is through building projects.

Not only does building projects provide activities that apply coding skills, but it also promotes research, creativity, and innovation. This article will focus on one specific project that can help beginners gain an understanding of programming concepts and design: building a contact book application with Python and PyQt. Through this project, beginner programmers can learn the fundamentals of GUI programming, SQLite, and SQL databases.

Approachable and Effective Learning with Building Projects

Programming can be a challenging task to learn, but building projects is an excellent way to get started and become comfortable with coding. Building projects can provide an enjoyable, enriching experience for individuals of all abilities, from beginners to advanced learners.

One of the advantages of building projects is the opportunity to apply coding skills to a real-world situation. Building a contact book application, for example, can teach individuals how to implement various programming concepts, including database management, GUI design, and data retrieval.

Building a Contact Book Application

With a project like the contact book application, students will gain experience in varied coding skills. It can be incredibly satisfying to watch a project come together piece by piece.

This type of project allows students to hone their problem-solving and critical thinking skills. Furthermore, students can gain experience in database management, a fundamental aspect of programming.

Databases are incredibly versatile, and with this program, students will learn how to add, remove, and retrieve stored data.

Creating the Contact Book Application

Before beginning to code, consider the project plan. It is essential to have an outline, as it gives a clear direction to the building process.

The first step to making this application is to create its skeleton using PyQt.

PyQt is an open-source software development toolkit that provides a comprehensive set of Python bindings for the Qt application framework. The Qt application framework provides a set of libraries and tools that developers use to build cross-platform applications.

PyQt is widely used in creating desktop applications due to its clean and easy-to-use API. Building the Contact Book’s GUI with Python

The user interface of the application is one of the most important components.

It’s important to create a user-friendly interface so that the end-users can quickly learn to use it. This can be accomplished in PyQt by employing the QTableView, QPushButton, QVBoxLayout, and layout.

The QTableView is PyQt’s built-in class for displaying tabular data. By properly utilizing this feature and other PyQt data manipulation classes, it is possible to display contact data in a visually appealing manner.

Users can then search for specific contacts using the built-in search bar or the interactive interface. Setting up the Contact Book’s Database

SQLite is the database engine used to create a contact book application.

It is a public-domain SQL database that provides a lightweight disk-based database that doesn’t require a separate server process and allows accessing the database using a nonstandard variant of the SQL Query Language. The data will be stored in a separate file, or a database file, and the application will interact with it to read or write from it.

The database connection is essential to make this work, and PyQt provides a convenient way to interact with SQLite databases.


Building projects can be a fun and engaging way to learn programming concepts. Through building a contact book application with Python and PyQt, beginners can gain experience in a range of skills, including SQLite database management, GUI design, and data retrieval.

Furthermore, with the growing popularity of Python and PyQt, building such an application could prove to be a useful skill in the job market. Python, Java, C++, and other languages are gaining recognition for handling advanced applications, making projects such as this increasingly valuable.

With the knowledge obtained through the creation of this contact book application, beginners will be able to grow their programming capabilities and explore more advanced projects. 3)

Creating the Contact Book Applicationto Contact Book Application

A contact book application is a piece of software designed to store and manage contact information, such as names, phone numbers, emails, addresses, and other related information.

It is a useful tool for keeping all of your contacts’ information organized and accessible from a computer or phone. Building a contact book application requires knowledge of various programming concepts, including database management, graphical user interface (GUI) programming, and Python.

In this article, we will explore the software requirements needed to create a functional contact book application.

Requirements to Build a Contact Book Application

To build a contact book application, you need to have the following tools and skills:

1. GUI programming: GUI programming is essential for creating the user interface of the application.

In this context, the PyQt library is a suitable tool for GUI programming. It is a Python library that allows developers to build user interfaces for desktop applications.

2. Python Skills: Python is a powerful programming language that is used in various programming projects.

To create a contact book application, you need to have knowledge of Python syntax, object-oriented programming concepts, and other related programming concepts. 3.

SQL databases: Databases are a fundamental aspect of programming, and you need to have a good understanding of SQL databases to create a contact book application. In this project, we are going to use SQLite, a lightweight disk-based database that allows for the storage and retrieval of contact information.

4. SQLite: SQLite is a popular SQL database that can be used in various programming projects.

It is easy to install and use, making it a suitable tool for beginners who want to learn the fundamentals of database management.

Project Overview

Project Structure

The project’s file structure is essential for ensuring clean code and efficient file management. It is crucial to organize the project’s files and directories properly to ensure that the files are found quickly and easily.

The contact book application should have the following root directory structure:

– ContactBookApp

– views

– models

– database




1. Views: This subdirectory contains all the GUI-related files and modules, including the main window and dialogs.

2. Models: This directory contains all the business logic codes, also known as the model.

It would include code that handles database connections and data manipulation. 3.

Database: This contains the SQL database file that stores the contacts’ information.


1. This file is the entry point for the application.

It runs when starting the application.

2. This file contains all the required information about the project, including installation instructions, dependencies, and usage instructions.

Role of Each File in the Application

1. Views: This file contains the GUI code of the contact book application.

It has two primary files: the main window and the dialogs. The main window file contains the main widget of the application that includes the toolbar, main list, and search bar.

The dialogs file contains all dialogue box widgets used when adding or editing contacts. 2.

Database: This file contains the SQL database file that stores the contact’s information. The database file contains the table schema of the contact information and is linked to the application’s programming codes via SQL queries in the model code.

3. Model: The model file is the business logic segment of the contact book application.

It carries out the storage and retrieval of contact information. It connects to the database file and executes SQL queries for data research, addition, editing, and removal.

4. Main: This file is the entry point of the application and ties all files and folders together in a way that facilitates proper communication among them.

It runs and manages all of them using app configurations and signal communication.


Creating a contact book application requires a combination of programming skills, including GUI programming, database management, and Python. A well-structured file and directory organization is necessary to keep the code organized and easy to access.

Contact book applications can be used in personal and work situations to keep contact information organized and help manage workloads. With these skills, programmers can create efficient and effective programs, applicablento various areas of software development.

5) Prerequisitesto Prerequisites

To build a contact book application with Python and PyQt, you need to have knowledge and experience in various programming concepts. Without these prerequisites, building an application can be challenging and time-consuming.

This section discusses the prerequisites required to build the contact book application. 1.

GUI programming: Understanding GUI programming is essential for creating the user interface of the application. PyQt is a popular Python library for GUI development, and it’s essential to have knowledge of how to use it to create applications.

2. Python Skills: Before starting a project with Python, a developer or student must have knowledge of the Python programming language.

It is critical to understand Python’s syntax, grammar, and concepts like data structures, object-oriented programming (OOP), and logic flow control. 3.

SQL databases: Databases are an essential aspect of many applications, including the contact book application. Understanding SQL databases, including SQLite, the database engine used to store the contacts’ information, is vital to developing an efficient and reliable application.

Resources to Brush Up on Required Topics

You can find many free and paid resources online to learn or refresh your knowledge of the required programming skills. Some excellent free resources for learning Python are Code Academy, Coursera, and Udemy.

These platforms provide well-structured and interactive courses for learning the basics and advanced concepts of Python. To learn GUI programming or PyQt, the PyQt documentation is an excellent resource.

It provides detailed information on how to use all of PyQt’s features with clear examples and explanations. Additionally, there are online communities of PyQt developers who share their knowledge and experience on forums like Reddit and StackOverflow.

For database management, there are many online courses and resources. Websites like W3Schools, Udemy, and Coursera offer free and paid courses that teach how to use SQL databases.

There are also many online communities that provide support and insights when working with databases. 6) Step 1: Creating the Contact Book’s Skeleton App with PyQt

Creating the Required Project Structure

Before creating the contact book application, we need to set up the project structure. The project structure organizes the project files and directories that ensure clean code and efficient file management.

Here’s an example of a basic project structure:

– ContactBookApp

– contactbook




– resources

– icon.png


– requirements.txt



1. contactbook: This directory is the package for all the application’s Python modules, including the and

2. Resources: This directory stores all the resources, such as images, the application icon, and other assets needed by the application.


1. This file contains the initialization code for the package.

This file is used to define all the classes, methods, and functions used in the package or in futher project files. 2. This file holds the application version number. 3. This file defines the main window of the application, which is the window that will house all the application’s elements, such as the toolbars, main list, and search bar. 4. The README file contains all the required information about the project, including installation instructions, dependencies, and usage instructions. 5.

requirements.txt: This file is used to define all the application’s dependencies. 6. This file is used for application installation and packaging. Creating the Application’s Main Window

After setting up the project’s structure, we need to create the application’s main window in the file, which is the main Python module for the contactbook package.

The main window provides a workspace to include the toolbars and central widget. Here’s an example of how to create the main window using QMainWindow and QWidget objects:

“` python

from PyQt5.QtWidgets import QMainWindow, QWidget, QHBoxLayout

class MainWindow(QMainWindow):

def __init__(self):


self.setWindowTitle(“Contact Book Application”)

self.resize(800, 600)

# Create a central widget for the main window

central_widget = QWidget(self)

horizontal_layout = QHBoxLayout()


# Set the central widget



In this example, the main window is defined as a class that inherits from QMainWindow.

The class contains a constructor method that sets the window’s properties and creates a central widget using QWidget. The QHBoxLayout widget manages the layout and positioning of the main window’s contents.

It allows arranging widgets horizontally. The widget is then added to the central widget, and the setCentralWidget() method sets the central widget to the main window.


Building a contact book application requires knowledge and experience in GUI programming, Python, and SQL database management. Having a well-structured project file organization is crucial to facilitate clean code and efficient file management.

Creating the main window requires the QMainWindow and QWidget objects to create the foundational pieces of the user interface. By understanding the required programming concepts and utilizing the right resources, developers can successfully build a functional contact book application.

With an efficient and easy-to-manage file structure and the main window defined, the contact book application can be expanded upon to create the full feature set of the application. 7) Step 2: Building the Contact Book’s GUI with Pythonto Building the GUI

After setting up the project’s structure and creating the main window, the next step is to build the contact book application’s graphical user interface (GUI).

A user-friendly and attractive interface is essential for any application, making it easy to access and use. With PyQt, you can create efficient and modern GUI designs.

Creating the TableView Widget

The QTableView widget is part of PyQt’s built-in classes, and it is used to display table data. Since the contact book application’s primary purpose is to store and display contact information, the QTableView Widget is essential.

The QTableView widget has various modes that include the selection mode. In the context of a contact book, the SelectRows method is suitable.

“` python

from PyQt5.QtWidgets import QTableView, QAbstractItemView

class TableView(QTableView):

def __init__(self):


# Set the selection behavior


# Disable edit triggers


# Set the size of the font

font = self.font()




Here, the class TableView inherits from QTableView. In the constructor, we set the selection behavior to SelectRows and disable editing triggers to NoEditTriggers.

We also set the font size to 12 and assign it to the table.

Creating Three Buttons for the GUI

The contact book GUI requires three buttons: add, remove, and edit buttons. Using the QPushButton Widget, it is easy to create the buttons as follows:

“` python

from PyQt5.QtWidgets import QPushButton

class ContactBookButtons:

def __init__(self):

self.add_button = QPushButton(“Add”)

self.remove_button = QPushButton(“Remove”)

self.edit_button = QPushButton(“Edit”)


In this code, we create a class named ContactBookButtons, which has three QPushButton objects initialized as add_button, remove_button, and edit_button.

Setting a Coherent Layout for Widgets in the GUI

The QVBoxLayout class can be used to stack up the widgets and organize them as intended for the contact book’s user interface. The add