|
|
|
@ -1,18 +1,21 @@
|
|
|
|
|
import re
|
|
|
|
|
|
|
|
|
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, \
|
|
|
|
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, QGridLayout, \
|
|
|
|
|
QHBoxLayout, QMessageBox, QSplitter, QRadioButton
|
|
|
|
|
|
|
|
|
|
from UI.SoftKeyBoardEdit import SoftKeyBoardEdit
|
|
|
|
|
|
|
|
|
|
class ForceButton(QPushButton):
|
|
|
|
|
def __init__(self, number = None, valueLabel = None, valueEdit = None):
|
|
|
|
|
def __init__(self, number = None, valueLabel = None, valueEdit = None, qualityValueLabel = None, \
|
|
|
|
|
qualityValue = None, btnName = None):
|
|
|
|
|
super().__init__()
|
|
|
|
|
self.valueEdit = valueEdit
|
|
|
|
|
self.valueLabel = valueLabel
|
|
|
|
|
self.qualityValueLabel = qualityValueLabel
|
|
|
|
|
self.qualityValue = qualityValue
|
|
|
|
|
self.number = number
|
|
|
|
|
self.setObjectName('forceBtn')
|
|
|
|
|
self.setText('强制')
|
|
|
|
|
self.setText(btnName)
|
|
|
|
|
|
|
|
|
|
class ForceRadioButton(QRadioButton):
|
|
|
|
|
def __init__(self, number = None):
|
|
|
|
@ -90,24 +93,45 @@ class RightAreaWidgets(QWidget):
|
|
|
|
|
if not self.force:
|
|
|
|
|
valueRadio.setEnabled(False)
|
|
|
|
|
else:
|
|
|
|
|
forceLayout = QHBoxLayout()
|
|
|
|
|
forceLayout = QGridLayout()
|
|
|
|
|
forceLayout.setContentsMargins(0, 0, 0, 0)
|
|
|
|
|
areaMessLabel = QLabel('当前值:' )
|
|
|
|
|
areaMessLabel.setObjectName('areaMessLabel')
|
|
|
|
|
areaValueLabel = QLabel('0')
|
|
|
|
|
areaValueLabel.setObjectName('areaValueLabel')
|
|
|
|
|
forceLayout.addWidget(areaMessLabel)
|
|
|
|
|
forceLayout.addWidget(areaValueLabel)
|
|
|
|
|
|
|
|
|
|
forceLayout.addWidget(areaMessLabel,0,0,1,1)
|
|
|
|
|
forceLayout.addWidget(areaValueLabel,0,1,1,1)
|
|
|
|
|
|
|
|
|
|
#添加质量位置layout
|
|
|
|
|
qualityLabel = QLabel('质量位状态值:' )
|
|
|
|
|
qualityLabel.setObjectName('areaMessLabel')
|
|
|
|
|
qualityValueLabel = QLabel('0')
|
|
|
|
|
qualityValueLabel.setObjectName('areaValueLabel')
|
|
|
|
|
forceLayout.addWidget(qualityLabel,1,0,1,1)
|
|
|
|
|
forceLayout.addWidget(qualityValueLabel,1,1,1,1)
|
|
|
|
|
|
|
|
|
|
if self.force:
|
|
|
|
|
areaLineEdit = SoftKeyBoardEdit('0')
|
|
|
|
|
areaLineEdit.setObjectName('areaLineEdit')
|
|
|
|
|
areaLineEdit.setFixedSize(80, 33)
|
|
|
|
|
forceBtn = ForceButton(number = number, valueLabel=areaValueLabel, valueEdit=areaLineEdit)
|
|
|
|
|
|
|
|
|
|
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 = '强制')
|
|
|
|
|
forceBtn.clicked.connect(self.AIAOForceValues)
|
|
|
|
|
|
|
|
|
|
qualityBtn = ForceButton(number = number, valueLabel=areaValueLabel, valueEdit=areaLineEdit, qualityValueLabel=qualityLabel, \
|
|
|
|
|
qualityValue=0, btnName = '故障')
|
|
|
|
|
qualityBtn.clicked.connect(self.AIAOForceValues)
|
|
|
|
|
|
|
|
|
|
# forceBtn.setFixedSize(50, 27)
|
|
|
|
|
forceLayout.addWidget(areaLineEdit)
|
|
|
|
|
forceLayout.addWidget(forceBtn)
|
|
|
|
|
forceLayout.addWidget(areaLineEdit,0,2,1,1)
|
|
|
|
|
forceLayout.addWidget(forceBtn,0,3,1,1)
|
|
|
|
|
forceLayout.addWidget(qualityLineEdit,1,2,1,1)
|
|
|
|
|
forceLayout.addWidget(qualityBtn,1,3,1,1)
|
|
|
|
|
else:
|
|
|
|
|
self.areaLabel[number] = areaValueLabel
|
|
|
|
|
|
|
|
|
@ -132,20 +156,22 @@ class RightAreaWidgets(QWidget):
|
|
|
|
|
# forceLayout.setSpacing(10)
|
|
|
|
|
return forceLayout
|
|
|
|
|
|
|
|
|
|
def wirteAreaLineEditValue(self,dataTypeAndModel, number, value, valueLabel = None):
|
|
|
|
|
def wirteAreaLineEditValue(self,dataTypeAndModel, number, value, qualityValue, valueLabel, qualityValueLabel):
|
|
|
|
|
if self.areaWidget.okBtnValue:
|
|
|
|
|
QMessageBox.warning(self, '提示', '请先保存通道信息')
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
if dataTypeAndModel in ['主站AO','从站AI']:
|
|
|
|
|
pattern = re.compile(r'-?\d*\.?\d+')
|
|
|
|
|
match = pattern.match(value)
|
|
|
|
|
match = pattern.match(value, qualityValue)
|
|
|
|
|
if not match:
|
|
|
|
|
QMessageBox.warning(self, '提示', '请输入数字。')
|
|
|
|
|
return
|
|
|
|
|
else:
|
|
|
|
|
valueLabel.setText(str(float(value)))
|
|
|
|
|
self.areaLineEditValue[number] = float(value)
|
|
|
|
|
qualityValueLabel.setText(str(float(qualityValue)))
|
|
|
|
|
self.areaLineEditValue[number] = [float(value), float(qualityValue)]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#判断输入值是否为0和1
|
|
|
|
|
elif dataTypeAndModel in ['主站DO','从站DI']:
|
|
|
|
@ -190,10 +216,16 @@ class RightAreaWidgets(QWidget):
|
|
|
|
|
sender = self.sender()
|
|
|
|
|
number = sender.number
|
|
|
|
|
valueLabel = sender.valueLabel
|
|
|
|
|
qualityValueLabel = sender.qualityValueLabel
|
|
|
|
|
value = sender.valueEdit.text()
|
|
|
|
|
qualityValue = sender.qualityValue
|
|
|
|
|
if qualityValue == False:
|
|
|
|
|
qualityValue = 0
|
|
|
|
|
|
|
|
|
|
dataTypeAndModel = self.deviceName[-2:] + self.dataType
|
|
|
|
|
curIndex = self.areaWidget.areaTabWidget.currentIndex()
|
|
|
|
|
valueList = self.wirteAreaLineEditValue(dataTypeAndModel=dataTypeAndModel, valueLabel=valueLabel,number=number, value=value)
|
|
|
|
|
valueList = self.wirteAreaLineEditValue(dataTypeAndModel=dataTypeAndModel, number=number, value=value, qualityValue=qualityValue, \
|
|
|
|
|
valueLabel=valueLabel, qualityValueLabel=qualityValueLabel )
|
|
|
|
|
# print(valueList, curIndex)
|
|
|
|
|
if valueList is None:
|
|
|
|
|
return
|
|
|
|
|