Creación de una aplicación generadora de códigos QR con PyQt5

En este artículo veremos cómo podemos hacer una aplicación generadora de códigos QR usando PyQt5. Un código QR es un tipo de código de barras de array diseñado por primera vez en 1994 para la industria automotriz en Japón. Un código de barras es una etiqueta óptica legible por máquina que contiene información sobre el artículo al que está adherido. A continuación se muestra cómo se verá la aplicación.
 

Para hacer esto, usaremos las bibliotecas que se proporcionan a continuación
. PyQt5 es un kit de herramientas GUI multiplataforma, un conjunto de enlaces de Python para Qt v5. Uno puede desarrollar una aplicación de escritorio interactiva con tanta facilidad debido a las herramientas y la simplicidad que ofrece esta biblioteca. A continuación se muestra el comando para instalar el PyQt5
 

pip install PyQt5

qrcode: para generar un código de respuesta rápida, es un código pictográfico bidimensional que se utiliza por su rápida legibilidad y su capacidad de almacenamiento comparativamente grande. El código consta de módulos negros dispuestos en un patrón cuadrado sobre un fondo blanco. La información codificada puede estar compuesta por cualquier tipo de datos (por ejemplo, símbolos binarios, alfanuméricos o Kanji). A continuación se muestra el comando para instalar el módulo qrcode
 

pip install qrcode

Pasos de implementación: 
1. Cree una clase de imagen que herede la imagen base de qrcode 
2. Dentro de la clase de imagen, obtenga el tamaño del borde y el ancho y anule el evento del pintor y cree una imagen inicial y rellénela con color blanco 
3. Cree una imagen principal clase de ventana 
4. Dentro de la clase de ventana, cree una etiqueta que muestre la imagen del código QR 
5. Cree una edición de línea para recibir el texto del usuario 
6. Agregue la etiqueta y la edición de línea al diseño vertical y establezca el diseño en la ventana 
7. Agregue una acción a la edición de línea cuando se presione 
8. Dentro de la acción de edición de línea, obtenga el texto de la edición de línea 
9. Cree una imagen de mapa de píxeles del texto de edición de línea y use la clase de imagen como image_factory 
10. Configure el mapa de píxeles, es decir, la imagen del código QR en la etiqueta
 

A continuación se muestra la implementación. 
 

Python3

# importing libraries
from PyQt5.QtWidgets import *
from PyQt5 import QtCore, QtGui
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import qrcode
import sys
 
# Image class for QR code
class Image(qrcode.image.base.BaseImage):
 
    # constructor
    def __init__(self, border, width, box_size):
 
        # assigning border
        self.border = border
 
        # assigning  width
        self.width = width
 
        # assigning box size
        self.box_size = box_size
 
        # creating size
        size = (width + border * 2) * box_size
 
        # image
        self._image = QImage(size, size, QImage.Format_RGB16)
 
        # initial image as white
        self._image.fill(Qt.white)
 
 
    # pixmap method
    def pixmap(self):
 
        # returns image
        return QPixmap.fromImage(self._image)
 
    # drawrect method for drawing rectangle
    def drawrect(self, row, col):
 
        # creating painter object
        painter = QPainter(self._image)
 
        # drawing rectangle
        painter.fillRect(
            (col + self.border) * self.box_size,
            (row + self.border) * self.box_size,
            self.box_size, self.box_size,
            QtCore.Qt.black)
 
 
# Main Window class
class Window(QMainWindow):
 
    # constructor
    def __init__(self):
        QMainWindow.__init__(self)
 
        # setting window title
        self.setWindowTitle("QR Code")
 
        # setting geometry
        self.setGeometry(100, 100, 300, 300)
 
        # creating a label to show the qr code
        self.label = QLabel(self)
 
        # creating a line edit to receive text
        self.edit = QLineEdit(self)
 
        # adding action when entered is pressed
        self.edit.returnPressed.connect(self.handleTextEntered)
 
        # setting font to the line edit
        self.edit.setFont(QFont('Times', 9))
 
        # setting alignment
        self.edit.setAlignment(Qt.AlignCenter)
 
        # creating a vertical layout
        layout = QVBoxLayout(self)
 
        # adding label to the layout
        layout.addWidget(self.label)
 
        # adding line edit to the layout
        layout.addWidget(self.edit)
 
        # creating a QWidget object
        widget = QWidget()
 
        # setting layout to the widget
        widget.setLayout(layout)
 
        # setting widget as central widget to the main window
        self.setCentralWidget(widget)
 
 
    # method called by the line edit
    def handleTextEntered(self):
 
        # get the text
        text = self.edit.text()
 
        # creating a pix map of qr code
        qr_image = qrcode.make(text, image_factory = Image).pixmap()
 
        # set image to the label
        self.label.setPixmap(qr_image)
 
 
 
 
# create pyqt5 app
app = QApplication(sys.argv)
 
# create the instance of our Window
window = Window()
 
# showing window
window.show()
 
# start the app
sys.exit(app.exec_())

Producción : 
 

Cuando el usuario ingresó el texto en la edición de línea y presione la tecla Intro, se mostrará el código QR y el tamaño de la ventana se ajustará de acuerdo con el tamaño del código QR
 

Publicación traducida automáticamente

Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *