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