From f1c96dd10e732b7b8f091ea8b2e3aa7a7787c209 Mon Sep 17 00:00:00 2001 From: "ADMINISTRATOR\\Administrator" <951937200@qq.com> Date: Wed, 13 Nov 2024 19:16:26 +0800 Subject: [PATCH] 1113 --- UI/RightAreaWidget.py | 48 ++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/UI/RightAreaWidget.py b/UI/RightAreaWidget.py index cca9c14..42fe829 100644 --- a/UI/RightAreaWidget.py +++ b/UI/RightAreaWidget.py @@ -7,12 +7,12 @@ from UI.SoftKeyBoardEdit import SoftKeyBoardEdit class ForceButton(QPushButton): def __init__(self, number = None, valueLabel = None, valueEdit = None, qualityValueLabel = None, \ - qualityValue = None, btnName = None): + qualityLineEdit = None, btnName = None): super().__init__() self.valueEdit = valueEdit self.valueLabel = valueLabel self.qualityValueLabel = qualityValueLabel - self.qualityValue = qualityValue + self.qualityLineEdit = qualityLineEdit self.number = number self.setObjectName('forceBtn') self.setText(btnName) @@ -26,6 +26,7 @@ class RightAreaWidgets(QWidget): def __init__(self, areaWidget, order, byteLineEdit, dataType, deviceName): super().__init__() self.areaLineEditValue = [] + self.qualityEditValueList = [] self.areaLabel = {} self.areaWidget = areaWidget self.devicesManange = self.areaWidget.devicesManange @@ -118,14 +119,14 @@ class RightAreaWidgets(QWidget): qualityLineEdit = SoftKeyBoardEdit('0') qualityLineEdit.setObjectName('areaLineEdit') qualityLineEdit.setFixedSize(80, 33) - qualityValue = qualityLineEdit.text() forceBtn = ForceButton(number = number, valueLabel=areaValueLabel, valueEdit=areaLineEdit, qualityValueLabel=qualityLabel, \ - qualityValue=qualityValue, btnName = '强制') + qualityLineEdit=qualityLineEdit, btnName = '强制') forceBtn.clicked.connect(self.AIAOForceValues) + qualityBtn = ForceButton(number = number, valueLabel=areaValueLabel, valueEdit=areaLineEdit, qualityValueLabel=qualityLabel, \ - qualityValue=0, btnName = '故障') - qualityBtn.clicked.connect(self.AIAOForceValues) + qualityLineEdit=qualityLineEdit, btnName = '故障') + qualityBtn.clicked.connect(lambda: self.AIAOForceValues(qualityValue = '0')) # forceBtn.setFixedSize(50, 27) forceLayout.addWidget(areaLineEdit,0,2,1,1) @@ -162,30 +163,25 @@ class RightAreaWidgets(QWidget): return if dataTypeAndModel in ['主站AO','从站AI']: - pattern = re.compile(r'-?\d*\.?\d+') - match = pattern.match(value, qualityValue) - if not match: + pattern = re.compile(r'^[+-]?(\d+(\.\d*)?|\.\d+)$') + match = pattern.match(value) + match2 = pattern.match(qualityValue) + if not match or not match2: QMessageBox.warning(self, '提示', '请输入数字。') return else: valueLabel.setText(str(float(value))) qualityValueLabel.setText(str(float(qualityValue))) - self.areaLineEditValue[number] = [float(value), float(qualityValue)] - + self.areaLineEditValue[number] = float(value) + self.qualityEditValueList[number] = float(qualityValue) + return self.areaLineEditValue , self.qualityEditValueList #返回值和质量位值 #判断输入值是否为0和1 elif dataTypeAndModel in ['主站DO','从站DI']: - # pattern = re.compile(r'^[01]$') - # match = pattern.match(value) - # if not match: - # QMessageBox.warning(self, '提示', '请输入0或1。') - # return - # else: - # valueLabel.setText(value) self.areaLineEditValue[number] = value - return self.areaLineEditValue + return self.areaLineEditValue def readValues(self, curIndex): @@ -212,25 +208,25 @@ class RightAreaWidgets(QWidget): - def AIAOForceValues(self): + def AIAOForceValues(self, qualityValue = None): sender = self.sender() number = sender.number valueLabel = sender.valueLabel qualityValueLabel = sender.qualityValueLabel value = sender.valueEdit.text() - qualityValue = sender.qualityValue - if qualityValue == False: - qualityValue = 0 - + if qualityValue == '0': + qualityValue = '0' + else: + qualityValue = sender.qualityLineEdit.text() dataTypeAndModel = self.deviceName[-2:] + self.dataType curIndex = self.areaWidget.areaTabWidget.currentIndex() - valueList = self.wirteAreaLineEditValue(dataTypeAndModel=dataTypeAndModel, number=number, value=value, qualityValue=qualityValue, \ + valueList, qualityValueList = self.wirteAreaLineEditValue(dataTypeAndModel=dataTypeAndModel, number=number, value=value, qualityValue=qualityValue, \ valueLabel=valueLabel, qualityValueLabel=qualityValueLabel ) # print(valueList, curIndex) if valueList is None: return else: - self.devicesManange.writeAreas(deviceName = self.deviceName, areaIndex = curIndex, values = valueList) + self.devicesManange.writeAreas(deviceName = self.deviceName, areaIndex = curIndex, values = valueList, qualityValueList = qualityValueList) def DIDOForceValues(self):