pyQT获取USB免驱扫码枪信息

参考链接:Python 监控扫码枪输入_python扫码枪条码自动入库_阿伟-_-的博客-CSDN博客

一,USB即插即用扫码枪

        描述:项目需要使用USB即插即用扫码枪,发现扫码枪并不是一个串口设备,而是一个键盘输入设备,特此记录一下。

      代码如下:

from PyQt5.QtCore import pyqtSignal,pyqtSlot,QThread,Qt
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5 import QtWidgets

from Form import Ui_Form
import sys,threading
from pynput import mouse,keyboard



CODE = ""

class BaseThread(QThread):
    def __init__(self):
        super(BaseThread, self).__init__()

class mainWin(QMainWindow,Ui_Form):
    signalString = pyqtSignal(str)
    def __init__(self ):
        super(mainWin,self).__init__()
        self.setupUi(self)
        self.textEdit.setFocus()
        self.signalString.connect(self.updateUI)

        try:

            self._threadScanner = threading.Thread(target=self.scanner)
            self._threadScanner.daemon = True  # 守护进程,主进程挂掉后,自动挂掉 python3.10以上版本支持
            self._threadScanner.start()

        except Exception as e:
            print(str(e))



    def updateUI(self,mMsg):
        self.textEdit.clear()
        self.lineEdit.clear()
        self.textEdit.append(mMsg)
        data = mMsg.split(",")
        if len(data)>2:
            self.lineEdit.setText(data[2])

    def scanner(self):
        with keyboard.Listener(on_release=self.on_release) as listener:
            listener.join()



    # 处理键盘输入的数据
    def on_release(self,key):
        global CODE

        try:
            CODE += key.char
        except Exception as e:
            try:
                if key == key.enter:  # 如果扫码枪中的数据是回车enter按键
                    self.signalString.emit(CODE)
                    print(CODE)
                    CODE = ""
            except Exception as e:
                CODE = ""

    @pyqtSlot()
    def on_Btn_OK_clicked(self):

        pass




if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = mainWin()
    mainWindow.show()
    sys.exit(app.exec())

说明:增加了一个信号和槽,把数据传到UI界面,避免界面卡主。

运行环境:Python3.10 +pyQt

运行结果如

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
可以使用Python中的openpyxl库来操作Excel文件。以下是一个使用pyqt5和openpyxl读取Excel文件并显示信息的示例代码: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QLabel from openpyxl import load_workbook class ExcelWidget(QWidget): def __init__(self, file_path): super().__init__() # 加载Excel文件 self.wb = load_workbook(filename=file_path, read_only=True) # 获取第一个sheet self.sheet = self.wb.active # 获取sheet的最大行数和最大列数 self.max_row = self.sheet.max_row self.max_column = self.sheet.max_column # 初始化UI self.initUI() def initUI(self): # 使用GridLayout布局 grid = QGridLayout() for i in range(1, self.max_row+1): for j in range(1, self.max_column+1): # 获取单元格的值 cell_value = self.sheet.cell(row=i, column=j).value # 创建QLabel显示单元格的值 label = QLabel(str(cell_value)) # 添加到布局中 grid.addWidget(label, i-1, j-1) self.setLayout(grid) if __name__ == '__main__': app = QApplication(sys.argv) # 创建ExcelWidget并显示 excel_widget = ExcelWidget('example.xlsx') excel_widget.show() sys.exit(app.exec_()) ``` 在上面的代码中,我们继承了QWidget类来创建一个新的自定义窗口部件ExcelWidget。在ExcelWidget的构造函数中,我们使用openpyxl库加载Excel文件,获取第一个sheet的最大行数和最大列数,并初始化UI。在UI中,我们使用QGridLayout来排列所有的QLabel,每个QLabel显示Excel文件中的一个单元格的值。最后,我们使用QApplication来启动应用程序并显示ExcelWidget窗口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

u无名人士

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

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

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

打赏作者

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

抵扣说明:

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

余额充值