我厌倦了在Pyqt5应用程序中从串行端口读取连续数据,并且创建了另一个线程来读取串行端口数据,但是该线程挂起了,我尝试进行延迟,但是它的工作量与延迟值和然后GUI崩溃。这是我的代码:
from PyQt5 import QtCore, QtGui, QtWidgets
from serialThreadFile import serialThreadClass
from PyQt5.QtCore import QThread, pyqtSignal
import time
class CloneThread(QThread):
signal = pyqtSignal(int)
def __init__(self):
super(CloneThread, self).__init__(parent=None)
def run(self):
while True:
water_level = self.mySerial.read_data() # reading data from Arduino
water_level = water_level.replace("\r\n", "")
water_level = int(water_level)
#water_level = 0
#water_level += 1
if self.tabWidget.currentIndex() == 1:
self.progressBar_2.setValue(water_level)
if water_level > 80:
self.autoLabel.setText('HIGH LEVEL')
self.autoLabel.setStyleSheet("color: rgb(250, 0, 20);")
self.close_valve()
elif 80 > water_level > 50:
self.autoLabel.setText('AVERAGE')
self.autoLabel.setStyleSheet("color: rgb(250, 0, 20);")
elif water_level < 50:
self.autoLabel.setText('LOW LEVEL')
self.autoLabel.setStyleSheet("color: rgb(254, 226, 62);")
self.open_valve()
elif self.tabWidget.currentIndex() == 0:
self.progressBar_1.setValue(water_level)
if water_level > 80:
self.manual_label.setText('HIGH LEVEL')
self.manual_label.setStyleSheet("color: rgb(250, 0, 20);")
elif 80 > water_level > 50:
self.manual_label.setText('AVERAGE')
self.manual_label.setStyleSheet("color: rgb(250, 0, 20);")
elif water_level < 50:
self.manual_label.setText('LOW LEVEL')
self.manual_label.setStyleSheet("color: rgb(254, 226, 62);")
self.signal.emit(water_level)