Get a skill gap analysis, personalised roadmap, and AI-powered resume optimisation.
Introduction
QR (Quick Response) codes have become increasingly popular in recent years, and they can be seen everywhere, from advertisements to business cards. QR codes can store a large amount of data in a small space, making them a convenient way to share information.
In this blog, we'll explore building a QR code generator using Python and Tkinter.
Python is a high-level programming language known for its simple syntax, readability, and versatility. It is widely used in various fields, such as web development, data analysis, machine learning, and scientific computing, to name a few.
What is Tkinter?
Tkinter is a Python library that provides a set of tools for creating graphical user interfaces (GUIs) for desktop applications. It is one of the most commonly used GUI libraries for Python and is included with most Python installations. With Tkinter, you can create windows, buttons, labels, menus, and other graphical elements to build a GUI for your Python application.
How QR Codes Works?
Before diving into the code, let's discuss how QR codes work. QR codes can store different types of data, such as text, URLs, and even binary data. QR codes consist of black and white modules arranged in a square grid with a white border around them. The position and size of the modules contain the information encoded in the QR code.
We'll use the qrcode library in Python to generate a QR code. This library allows us to generate QR codes from any string or data. Tkinter will help us create a simple GUI allowing users to enter the data they want to encode and generate the QR code.
Before we begin, we'll need to install the qrcode module and the Tkinter library. To install qrcode, run the following command in your terminal or command prompt:
pip install qrcode
You can also try this code with Online Python Compiler
To install Tkinter, you may need to install it separately depending on your operating system. For example, on Ubuntu Linux, you can install Tkinter using the following command:
sudo apt-get install python3-tk
You can also try this code with Online Python Compiler
We'll be using the qrcode module to generate the QR Codes, the tkinter module to create the GUI, and the filedialog submodule of tkinter to allow the user to choose where to save the generated QR Code.
Defining the QRCodeGenerator Class
Next, we'll define a class called QRCodeGenerator that creates the Tkinter window and contains methods for generating and saving QR Codes:
class QRCodeGenerator:
def __init__(self, master):
self.master = master
master.title("QR Code Generator")
# Create label and entry widgets
self.label = tk.Label(master, text="Enter text or URL:")
self.label.pack()
self.entry = tk.Entry(master, width=50)
self.entry.pack()
# Create button widgets
self.generate_button = tk.Button(master, text="Generate QR Code", command=self.generate_qr_code)
self.generate_button.pack()
self.save_button = tk.Button(master, text="Save QR Code", command=self.save_qr_code, state=tk.DISABLED)
self.save_button.pack()
# Initialize variables
self.qr_code = None
You can also try this code with Online Python Compiler
The __init__ method initializes the Tkinter window and creates label, entry, and button widgets. The label and entry widgets are used to input the data to be encoded in the QR Code.
The "Generate QR Code" button calls the generate_qr_code method, and the "Save QR Code" button calls the save_qr_code method.
The qr_code variable is initialized to None to indicate that no QR Code has been generated yet.
The get method of the entry widget retrieves the text entered by the user. If there is text entered, the qrcode.make function is used to generate a QR Code from the text, and the qr_code variable is set to the generated QR Code.
The "Save QR Code" button is enabled by setting the state attribute to tk.NORMAL. If there is no text entered, the qr_code variable is set to None, and the "Save QR Code" button is disabled by setting the state attribute to tk.DISABLED.
Save QR Code Method
Finally, we'll define the save_qr_code method, which allows the user to choose where to save the generated QR Code:
def save_qr_code(self):
# Open file dialog to choose where to save QR Code
filename = filedialog.asksaveasfilename(defaultextension=".png")
if filename:
self.qr_code.save(filename)
You can also try this code with Online Python Compiler
The asksaveasfilename function of the filedialog submodule of tkinter opens a dialog window that allows the user to choose where to save the QR Code.
The defaultextension argument specifies the default file extension for the file. If the user chooses a filename, the qr_code.save method is used to save the QR Code to the specified file.
Running the QR Code Generator
To run the QR Code generator, we'll create an instance of the QRCodeGenerator class and pass it the Tkinter root window:
The Tk function of the tkinter module creates the root window, and the QRCodeGenerator class is passed the root window as an argument. The mainloop method of the root window starts the Tkinter event loop and keeps the window open until it is closed by the user.
Python Code
import qrcode
import tkinter as tk
from tkinter import filedialog
class QRCodeGenerator:
def __init__(self, master):
self.master = master
master.title("QR Code Generator")
# Create label and entry widgets
self.label = tk.Label(master, text="Enter text or URL:")
self.label.pack()
self.entry = tk.Entry(master, width=50)
self.entry.pack()
# Create button widgets
self.generate_button = tk.Button(master, text="Generate QR Code", command=self.generate_qr_code)
self.generate_button.pack()
self.save_button = tk.Button(master, text="Save QR Code", command=self.save_qr_code, state=tk.DISABLED)
self.save_button.pack()
# Initialize variables
self.qr_code = None
def generate_qr_code(self):
# Generate QR Code
data = self.entry.get()
if data:
self.qr_code = qrcode.make(data)
self.save_button.config(state=tk.NORMAL)
else:
self.qr_code = None
self.save_button.config(state=tk.DISABLED)
def save_qr_code(self):
# Save QR Code as image file
file_path = filedialog.asksaveasfilename(defaultextension=".png")
if file_path:
self.qr_code.save(file_path)
root = tk.Tk()
qrcode_generator = QRCodeGenerator(root)
root.mainloop()
You can also try this code with Online Python Compiler
What is the purpose of the "qrcode" library in Python?
The "qrcode" library in Python is used to generate QR codes.
What is the purpose of the "filedialog" module in Tkinter?
The "filedialog" module in Tkinter is used to display a dialog box for saving files.
How do I use the "Button" widget in Tkinter?
The "Button" widget in Tkinter is used to create a clickable button.
How do I run the QR code generator program?
You can run the QR code generator program by calling the "mainloop" method on the Tkinter master window.
Conclusion
In this blog, we explored how to build a simple QR code generator using Python and Tkinter. We used the QR code library to generate QR codes and Tkinter to create a GUI that allows users to enter the data they want to encode and generate the QR code. With this code as a starting point, you can extend the generator's functionality to include options such as saving the QR code to a file or generating codes with different sizes and colors. QR codes can be used in a wide range of applications, and by building your own QR code generator, you can make it easier for users to generate codes for their specific needs.