'''
Function: 二维码生成器
Author: Charles
'''
import io
import sys
import qrcode
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import QApplication, QGridLayout,
QLabel, QLineEdit, QPushButton, QComboBox,
QSpinBox, QFileDialog, QDialog
class qrcodeGUI(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__()
self.setFixedSize(600, 400)
self.setWindowTitle('二维码生成器')
self.grid = QGridLayout()
# UI组件初始化...
self.content_label = QLabel('内容:')
self.content_edit = QLineEdit()
self.generate_button = QPushButton('生成二维码')
self.save_button = QPushButton('保存二维码')
self.show_label = QLabel()
# 绑定事件
self.generate_button.clicked.connect(self.genQrcode)
self.save_button.clicked.connect(self.saveQrcode)
self.genQrcode()
def genQrcode(self):
content = self.content_edit.text()
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_M,
box_size=10,
border=4
)
qr.add_data(content)
self.qr_img = qr.make_image()
# 显示图片
fp = io.BytesIO()
self.qr_img.save(fp, 'BMP')
qimg = QtGui.QImage()
qimg.loadFromData(fp.getvalue(), 'BMP')
self.show_label.setPixmap(QtGui.QPixmap.fromImage(qimg))
def saveQrcode(self):
filename = QFileDialog.getSaveFileName(
self, '保存', './qrcode.png', '图片文件(*)')
if filename[0] != '':
self.qr_img.save(filename[0])
if __name__ == '__main__':
app = QApplication(sys.argv)
gui = qrcodeGUI()
gui.show()
sys.exit(app.exec_())
本地运行方法:
- 安装依赖:
pip install qrcode PyQt5 pillow
- 保存代码为
qrcode.py
- 运行:
python qrcode.py
无GUI版本(命令行):
import qrcode
# 生成二维码
img = qrcode.make('Hello World')
img.save('qr.png') # 保存为图片