我正在尝试读取串行数据以实时更新诊断页面。经过长时间的搜索,我找到了此代码,并且能够使其适用于我的代码。但是现在我的GUI将随机崩溃。有时它可以完美工作,有时它会随机崩溃。我知道这与它有关,因为我已将其注释掉,但从未使GUI崩溃。
我在Qt Designer中使用PyQt5。
谢谢您的帮助!
class WorkerThread(QtCore.QObject):
signalExample = QtCore.pyqtSignal(int)
def __init__(self):
super().__init__()
@QtCore.pyqtSlot()
def run(self):
while True:
# Long running task ...
rawserial = ser.readline()
cookedserial = rawserial.decode('utf-8').strip('\r\n')
datasplit = cookedserial.split(',')
global temperature
temperature = datasplit[0].strip('<')
print(temperature)
self.signalExample.emit(temperature)
time.sleep(1)
class Ui_DIAGNOSTICS(object):
def __init__(self, parent = None):
super(Ui_DIAGNOSTICS,self).__init__()
self.worker = WorkerThread()
self.workerThread = QtCore.QThread()
self.workerThread.started.connect(self.worker.run) # Init worker run() at startup (optional)
self.worker.signalExample.connect(self.setTemp) # Connect your signals/slots
self.worker.moveToThread(self.workerThread) # Move the Worker object to the Thread object
self.workerThread.start()
time.sleep(1)
def setTemp(self):
self.TEMP.display(temperature)