最近做了一个项目,在调试时需要针对不同仓位,在不同时间段,生成二维码用以调试。因开发没空,自己动手用python调用Ppyqt5,做了一个二维码生成器。
=
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QTextEdit, QMessageBox
import qrcode
from PyQt5.QtWidgets import QFileDialog
class MainWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('二维码生成器')
self.setGeometry(200, 200, 500, 600)
# 标签和输入框
self.label_id = QLabel('站号ID:', self)
self.label_id.move(50, 50)
self.edit_id = QLineEdit(self)
self.edit_id.move(150, 50)
self.label_line = QLabel('生产线号:', self)
self.label_line.move(50, 90)
self.edit_line = QLineEdit(self)
self.edit_line.move(150, 90)
self.label_store = QLabel('仓号:', self)
self.label_store.move(50, 130)
self.edit_store = QLineEdit(self)
self.edit_store.move(150, 130)
self.label_day = QLabel('日:', self)
self.label_day.move(50, 170)
self.edit_day = QLineEdit(self)
self.edit_day.move(150, 170)
self.label_hour = QLabel('时:', self)
self.label_hour.move(50, 210)
self.edit_hour = QLineEdit(self)
self.edit_hour.move(150, 210)
self.label_min = QLabel('分:', self)
self.label_min.move(50, 250)
self.edit_min = QLineEdit(self)
self.edit_min.move(150, 250)
# 校验和生成按钮
self.btn_valid = QPushButton('校验', self)
self.btn_valid.move(350, 50)
self.btn_valid.clicked.connect(self.check_data)
self.btn_gen = QPushButton('生成', self)
self.btn_gen.move(350, 100)
self.btn_gen.clicked.connect(self.generate_qrcode)
# 显示框
self.text_view = QTextEdit(self)
self.text_view.setGeometry(50, 300, 400, 200)
def check_data(self):
# 读取输入框中的数据
id_text = self.edit_id.text()
line_text = self.edit_line.text()
store_text = self.edit_store.text()
day_text = self.edit_day.text()
hour_text = self.edit_hour.text()
min_text = self.edit_min.text()
# 转换为16进制
id_hex = format(int(id_text), '04X')
line_hex = format(int(line_text), '02X')
store_hex = format(int(store_text), '02X')
day_hex = format(int(day_text), '02X')
hour_hex = format(int(hour_text), '02X')
min_hex = format(int(min_text), '02X')
# 计算异或和
data = bytes.fromhex(id_hex + line_hex + store_hex + day_hex + hour_hex + min_hex)
xor_result = 0
for b in data:
xor_result ^= b
# 显示结果
result = f"{id_hex.upper()}{line_hex.upper()}{store_hex.upper()}{day_hex.upper()}{hour_hex.upper()}{min_hex.upper()}{format(xor_result, '02X').upper()}"
self.text_view.setPlainText(result)
def generate_qrcode(self):
# 读取显示框中的数据
data = self.text_view.toPlainText().strip()
# 生成二维码图像并询问保存位置
if data:
result = QMessageBox.question(self, "确认框", "是否保存二维码?")
if result == QMessageBox.Yes:
# 弹出文件对话框,让用户选择保存路径和文件名
file_path, _ = QFileDialog.getSaveFileName(self, '保存二维码', '', 'Images (*.png *.jpg *.bmp)')
if file_path:
img = qrcode.make(data)
img.save(file_path)
def show_message(self, message):
self.text_view.setPlainText(message)
if __name__ == '__main__':
app = QApplication([])
w = MainWidget()
w.show()
app.exec_()