python作工控上位机————自修记录(第四天) 二维码生成器

最近做了一个项目,在调试时需要针对不同仓位,在不同时间段,生成二维码用以调试。因开发没空,自己动手用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_()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白作工控

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值