Robert Johns | 22 Jan, 2025
Fact checked by Jim Markus

How To Create A Python QR Code Generator App for Beginners

Have you ever wanted to generate a QR code for your website, contact information, or a secret message?

In this tutorial, I’ll show you how to build a Python program that generates QR codes with ease. By the end, you’ll have a simple application with a graphical user interface (GUI) that allows users to input a URL and generate a QR code in just a few clicks.

This project is beginner-friendly and demonstrates how to use Python libraries for image processing and GUI development. Let’s dive in!

Why Build a Python QR Code Generator?

A QR code generator is a fun and practical Python project to enhance your skills. Here’s what you’ll learn:

  • Using the qrcode library to generate QR codes.
  • Leveraging tkinter to create a graphical user interface.
  • Working with Pillow (PIL) to handle and display images.

This project is not only educational but also highly useful in real-world applications. Let’s get started!

Project Prerequisites

Before we begin coding, let’s review the skills and tools needed for this tutorial.

Don’t worry if you’re not a Python expert just yet! Having a few basics under your belt will make this journey smoother and more enjoyable.

Basic Python Knowledge

You should be familiar with:

  • Variables, functions, and loops.
  • Basic file handling and exception handling.

Required Libraries

I’ll be using the following Python libraries:

  • qrcode for generating QR codes.
  • tkinter for creating the GUI.
  • Pillow (PIL) for displaying the generated QR code.

If you don't have all of these yet, you can easily install them with this command:

pip install qrcode pillow

A Curious and Experimental Mind

For me, a willingness to experiment and make small adjustments are some of the keys to learning. I want you to be ready to explore and debug as you go along!

Step 1: Set Up Your Project

Before I jump into coding, let’s set up the project:

1. Make sure Python is installed on your computer. If not, download it from the official Python website.
2. Open your favorite code editor or IDE.
3. Create a new Python file, for example, qr_code_generator.py.

Step 2: Import Required Libraries

Let’s start by importing the libraries we’ll use:

import tkinter as tk
from tkinter import ttk, messagebox
import qrcode
from PIL import Image, ImageTk

Step 3: Build the GUI

Initialize the Main Window

Set up the main application window:

# Create the main window
root = tk.Tk()
root.title("QR Code Generator")
root.geometry("400x500")
root.configure(bg="#f0f4f7")

Add Input Fields and Generate Button

We’ll add an entry box for the URL and a button to generate the QR code:

# URL input
label_url = ttk.Label(root, text="Enter URL:", background="#f0f4f7")
label_url.pack(pady=10)
entry_url = ttk.Entry(root, font=("Helvetica", 12), width=40)
entry_url.pack(pady=10)

# Generate button
button_generate = ttk.Button(root, text="Generate QR Code", command=None)
button_generate.pack(pady=20)

Add a Label to Display the QR Code

Create a label to display the generated QR code:

# Label to display the QR code
qr_label = ttk.Label(root, background="#f0f4f7")
qr_label.pack(pady=10)

Step 4: Write the QR Code Generation Function

Here’s the function to generate and display the QR code:

def generate_qrcode():
    url = entry_url.get()
    if not url:
        messagebox.showerror("Error", "Please enter a valid URL.")
        return

    # Generate the QR code
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=4,
    )
    qr.add_data(url)
    qr.make(fit=True)

    # Create and save the QR code image
    qr_image = qr.make_image(fill_color="black", back_color="white")
    qr_image.save("qrcode.png")

    # Display the QR code
    qr_image_tk = ImageTk.PhotoImage(Image.open("qrcode.png"))
    qr_label.config(image=qr_image_tk)
    qr_label.image = qr_image_tk
    messagebox.showinfo("Success", "QR Code generated successfully!")

Link the Button to the Function

Connect the generate_qrcode function to the button:

button_generate.config(command=generate_qrcode)

Step 5: Run the Application

Start the tkinter event loop to launch the application:

root.mainloop()

Full Program Source Code

Here’s the complete code for the Python QR Code Generator:

'''
Hackr.io Python Tutorial: QR Code Generator
'''
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import qrcode
from PIL import Image, ImageTk


def generate_qrcode():
    url = entry_url.get()
    if not url:
        messagebox.showerror("Error", "Please enter a valid URL.")
        return

    # Generate the QR code
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=5,
        border=2,
    )
    qr.add_data(url)
    qr.make(fit=True)

    # Create an image of the QR code
    qr_image = qr.make_image(fill_color="black", back_color="white")
    qr_image.save("qrcode.png")

    # Display the QR code in the application
    qr_image_tk = ImageTk.PhotoImage(Image.open("qrcode.png"))
    qr_label.config(image=qr_image_tk)
    qr_label.image = qr_image_tk
    label_result.config(text="QR Code generated successfully!")


# Create the main window
root = tk.Tk()
root.title("QR Code Generator")
root.geometry("400x500")
root.configure(bg="#f0f4f7")

# URL input
label_url = ttk.Label(root, text="Enter URL:", background="#f0f4f7")
label_url.pack(pady=10)
entry_url = ttk.Entry(root, font=("Helvetica", 12), width=40)
entry_url.pack(pady=10)

# Generate button
button_generate = ttk.Button(
    root, text="Generate QR Code", command=generate_qrcode, style="TButton")
button_generate.pack(pady=20)

# Label to display the QR code
qr_label = ttk.Label(root, background="#f0f4f7")
qr_label.pack(pady=10)

# Result label
label_result = ttk.Label(root, text="", font=(
    "Helvetica", 14), background="#f0f4f7", foreground="#333")
label_result.pack(pady=20)

# Styling
style = ttk.Style()
style.configure("TButton", font=("Helvetica", 12), padding=5)
style.map("TButton",
          background=[("active", "#0056b3"), ("!active", "#007bff")],
          foreground=[("active", "white"), ("!active", "white")])

# Start the Tkinter event loop
root.mainloop()

Wrapping Up

You’ve just built a Python QR code generator, that's impressive! Hopefully, this project has shown you how Python can leverage libraries like qrcode and tkinter to create practical applications.

Feel free to expand this project by:
- Adding more customization options, like changing QR code colors.
- Allowing users to save the QR code to a custom location.
- Supporting other types of input, like text or contact details.

Happy coding!

By Robert Johns

Technical Editor for Hackr.io | 15+ Years in Python, Java, SQL, C++, C#, JavaScript, Ruby, PHP, .NET, MATLAB, HTML & CSS, and more... 10+ Years in Networking, Cloud, APIs, Linux | 5+ Years in Data Science | 2x PhDs in Structural & Blast Engineering

View all post by the author

Subscribe to our Newsletter for Articles, News, & Jobs.

I accept the Terms and Conditions.

Disclosure: Hackr.io is supported by its audience. When you purchase through links on our site, we may earn an affiliate commission.

In this article

Learn More

Please login to leave comments