from
PyQt5.QtWidgets
import
*
from
PyQt5
import
QtCore, QtGui
from
PyQt5.QtGui
import
*
from
PyQt5.QtCore
import
*
import
qrcode
import
sys
class
Image(qrcode.image.base.BaseImage):
def
__init__(
self
, border, width, box_size):
self
.border
=
border
self
.width
=
width
self
.box_size
=
box_size
size
=
(width
+
border
*
2
)
*
box_size
self
._image
=
QImage(size, size, QImage.Format_RGB16)
self
._image.fill(Qt.white)
def
pixmap(
self
):
return
QPixmap.fromImage(
self
._image)
def
drawrect(
self
, row, col):
painter
=
QPainter(
self
._image)
painter.fillRect(
(col
+
self
.border)
*
self
.box_size,
(row
+
self
.border)
*
self
.box_size,
self
.box_size,
self
.box_size,
QtCore.Qt.black)
class
Window(QMainWindow):
def
__init__(
self
):
QMainWindow.__init__(
self
)
self
.setWindowTitle("QR Code")
self
.setGeometry(
100
,
100
,
300
,
300
)
self
.label
=
QLabel(
self
)
self
.edit
=
QLineEdit(
self
)
self
.edit.returnPressed.connect(
self
.handleTextEntered)
self
.edit.setFont(QFont(
'Times'
,
9
))
self
.edit.setAlignment(Qt.AlignCenter)
layout
=
QVBoxLayout(
self
)
layout.addWidget(
self
.label)
layout.addWidget(
self
.edit)
widget
=
QWidget()
widget.setLayout(layout)
self
.setCentralWidget(widget)
def
handleTextEntered(
self
):
text
=
self
.edit.text()
qr_image
=
qrcode.make(text, image_factory
=
Image).pixmap()
self
.label.setPixmap(qr_image)
app
=
QApplication(sys.argv)
window
=
Window()
window.show()
sys.exit(app.exec_())