栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PyQt5-自动化串行模块

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PyQt5-自动化串行模块

Qt中的一个基本规则是,不应从主线程以外的线程更新GUI,这被称为GUI线程。有几种选择,例如通过信号将数据发送到主线程,或使用

QRunnable
with
QThreadPool
,如下所示:

码:

qtCreatorFile = "gui.ui" Ui_MainWindow, QtbaseClass = uic.loadUiType(qtCreatorFile)estudiantes = ['   ','    ','     ','    ']class SerialRunnable(QtCore.QRunnable):    def __init__(self, w):        QtCore.QRunnable.__init__(self)        self.w = w        self.ser = serial.Serial('COM9', baudrate=9600, timeout=1)    def run(self):        while True: dato = self.ser.readline().depre('ascii') if dato != "":     QtCore.QmetaObject.invokeMethod(self.w, "setValues",    QtCore.Qt.QueuedConnection,    QtCore.Q_ARG(str, dato)) QtCore.QThread.msleep(10)class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):    def __init__(self):        QtWidgets.QMainWindow.__init__(self)        self.setupUi(self)        runnable = SerialRunnable(self)        QtCore.QThreadPool.globalInstance().start(runnable)    @QtCore.pyqtSlot(str)    def setValues(self, dato):        estudiantes.insert(0,dato)        estudiantes.pop()        self.Box1.setText(estudiantes[0])        self.Box2.setText(estudiantes[1])        self.Box3.setText(estudiantes[2])        self.Box4.setText(estudiantes[3])


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/652994.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号