Login Page In Python Tkinter With Database Sqlite3

Hello fellow developers!

Today, I want to take a deep dive into creating a login page in Python using the Tkinter library, and integrating it with a SQLite3 database. As someone who loves building user-friendly interfaces, I find Tkinter to be an amazing tool to create GUI applications in Python.

Before we get started, let’s talk a bit about the importance of having a login page. In today’s digital age, it is crucial to protect sensitive information and provide a secure user experience. A login page serves as the gateway to your application, ensuring that only authorized users can access and interact with it.

Getting Started with Tkinter

If you haven’t used Tkinter before, don’t worry! It’s a beginner-friendly library that comes bundled with Python. To begin, let’s import the necessary modules:


import tkinter as tk
from tkinter import messagebox
import sqlite3

The tkinter module provides the basic functionality for creating our GUI, while messagebox allows us to display pop-up messages. Lastly, we need to import sqlite3 to interact with our database.

Creating the Login Page

Now, let’s start building our login page. We’ll begin by setting up the main window:


window = tk.Tk()
window.title("Login Page")

In this case, we’re simply creating a new Tkinter window and setting its title to “Login Page”. Feel free to customize the title as per your preference.

Next, we will add the necessary widgets to our login page, such as labels, entry fields, and buttons:


username_label = tk.Label(window, text="Username:")
username_entry = tk.Entry(window)
password_label = tk.Label(window, text="Password:")
password_entry = tk.Entry(window, show="*")
login_button = tk.Button(window, text="Login", command=login)

Here, we’ve created a label and an entry field for the username, as well as a label and an entry field for the password. We’ve also added a login button that will call the login function. Don’t worry, we’ll define this function shortly.

To arrange these widgets, we’ll use the grid layout manager:


username_label.grid(row=0, column=0, sticky=tk.E)
username_entry.grid(row=0, column=1)
password_label.grid(row=1, column=0, sticky=tk.E)
password_entry.grid(row=1, column=1)
login_button.grid(row=2, columnspan=2)

The grid() method allows us to define the position of each widget within the window. By specifying the row and column parameters, we can control their placement. Note that row=2, columnspan=2 means that the login button will span across two columns.

Integrating with SQLite3

Now that we have our login page ready, let’s move on to integrating it with a SQLite3 database. SQLite3 is a lightweight database engine that doesn’t require a separate server process, making it convenient for small-scale applications.

First, we’ll establish a connection to our database:


conn = sqlite3.connect('users.db')

Make sure you have the SQLite3 library installed, as it comes bundled with Python by default. We also need to create a cursor object to execute SQL queries:


cursor = conn.cursor()

Now, let’s create a table to store our user credentials:


cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT)")

This SQL statement creates a table named ‘users’ with three columns: ‘id’, ‘username’, and ‘password’. The ‘id’ column is set as the primary key, while ‘username’ and ‘password’ columns will store the credentials.

Next, we’ll define the login function that will be called when the user clicks the login button:


def login():
username = username_entry.get()
password = password_entry.get()

cursor.execute("SELECT * FROM users WHERE username=? AND password=?", (username, password))
user = cursor.fetchone()

if user:
messagebox.showinfo("Login Successful", "Welcome, " + username + "!")
else:
messagebox.showerror("Login Failed", "Invalid username or password")

In this function, we retrieve the values entered in the username and password entry fields. We then query the ‘users’ table to check if the given username and password combination exists. If a matching user is found, we display a success message; otherwise, we show an error message indicating invalid credentials.

Conclusion

And that’s it! We have successfully created a login page in Python using Tkinter and integrated it with a SQLite3 database. We explored the basics of Tkinter, setting up the main window, adding widgets, and using the grid layout manager. Additionally, we learned how to interact with a SQLite3 database by creating a table and executing queries.

Remember, user authentication is a critical aspect of any application, and implementing a secure login page is a great way to enhance the overall user experience. With Tkinter and SQLite3, you have the power to create robust and user-friendly interfaces.

So go ahead, give it a try, and let your creativity shine with Tkinter!

Happy coding!