0615更新

main
ZHANGXUXU\95193 1 year ago
parent d0001ef32d
commit 4ca93ecee3

@ -77,7 +77,7 @@ class DynamicAddBlock(QHBoxLayout):
pblockBtn.clicked.connect(lambda _, pbbtn = pblockBtn: self.switchParameterWidget(pbbtn))
self.addWidget(pblockBtn, 3)
self.buttonlist.append(pblockBtn)
physicalBlockView = ParmView(PhysicalBlock)
physicalBlockView = ParmView(PhysicalBlock, i)
self.blockViewlist.append(physicalBlockView)
if i == 0:
pblockBtn.setChecked(True)
@ -93,7 +93,7 @@ class DynamicAddBlock(QHBoxLayout):
fblockBtn.clicked.connect(lambda _, fbbtn = fblockBtn: self.switchParameterWidget(fbbtn))
self.addWidget(fblockBtn, 3)
self.buttonlist.append(fblockBtn)
aiFunctionBlockView = ParmView(AIFunctionBlock)
aiFunctionBlockView = ParmView(AIFunctionBlock, i)
self.blockViewlist.append(aiFunctionBlockView)
for i in range(tbNumber):
@ -119,7 +119,7 @@ class DynamicAddBlock(QHBoxLayout):
self.addWidget(tbwidget, 5)
self.buttonlist.append(tblockBtn)
for tb in self.tbList:
tbBlockView = ParmView(globals()[tb])
tbBlockView = ParmView(globals()[tb], i)
self.blockViewlist.append(tbBlockView)
self.parameterButtonGroup = QButtonGroup()
@ -130,7 +130,12 @@ class DynamicAddBlock(QHBoxLayout):
self.parameStackWidget = QStackedWidget()
for view in self.blockViewlist:
self.parameStackWidget.addWidget(view)
def switchParameterWidget(self, buttonType):
for index , button in enumerate(self.buttonlist):
if button == buttonType:
self.parameStackWidget.setCurrentIndex(index)
def switchTbtype(self, index, combox, button):

@ -1,12 +1,14 @@
import imp
from operator import imod
import typing
import re
# from matplotlib.pyplot import box
import qtawesome
from PyQt5 import QtGui,QtCore,QtWidgets
from PyQt5.QtCore import QAbstractTableModel, QModelIndex, Qt, QVariant, QSize
from PyQt5.QtWidgets import QItemDelegate, QHBoxLayout, QWidget, QPushButton, QMessageBox, QLineEdit, QComboBox, QStyledItemDelegate
from PyQt5.QtWidgets import QItemDelegate, QHBoxLayout, QWidget, QPushButton, QMessageBox, QLineEdit, QComboBox, QStyledItemDelegate, QVBoxLayout
from UI.LoadingDataWidget import LoadingDataWidget
from UI.ObjectTypeEditlayout import ObjectTypeEditlayout
class VarTableModel(QAbstractTableModel):
@ -128,6 +130,7 @@ class VarTableModel(QAbstractTableModel):
self.table.proxy.invalidate()
class VarButtonDelegate(QItemDelegate):
"""该类用于向单元格中添加按钮 任务表格"""
def __init__(self, parent=None):
@ -140,9 +143,15 @@ class VarButtonDelegate(QItemDelegate):
"",
self.parent()
)
if 'w' not in self.parent().model.datas[index.row()][4]:
readORwirte = self.parent().model.datas[index.row()][4]
if 'w' not in readORwirte:
return
dataType = self.parent().model.datas[index.row()][3]
objectType = self.parent().model.datas[index.row()][1]
objectTypeEditlayout = ObjectTypeEditlayout(objectType, dataType)
editlineLayout = objectTypeEditlayout.initUI()
startActionBtn.index = [index.row(), index.column()]
startActionBtn.setToolTip('强制')
@ -155,15 +164,17 @@ class VarButtonDelegate(QItemDelegate):
refreshButton.setToolTip('刷新')
refreshButton.clicked.connect(self.refreshData)
parameEditline = QLineEdit()
parameEditline.setObjectName('parameEditline')
refreshButton.index = [index.row(), index.column()]
# parameEditline = QLineEdit()
# # parameEditline.setObjectName('parameEditline')
boxLayout = QHBoxLayout()
boxLayout.addWidget(parameEditline)
# boxLayout.addWidget(parameEditline)
boxLayout.addLayout(editlineLayout)
boxLayout.addWidget(startActionBtn)
boxLayout.addWidget(refreshButton)
startActionBtn.clicked.connect(lambda: self.startAction(parameEditline))
startActionBtn.clicked.connect(lambda: self.startAction(objectTypeEditlayout))
startActionBtn.setObjectName('startActionBtn')
boxLayout.setContentsMargins(2, 0, 0, 2)
@ -174,23 +185,37 @@ class VarButtonDelegate(QItemDelegate):
index,
widget
)
def startAction(self, parameEditline):
def startAction(self, objectTypeEditlayout):
sender = self.sender()
model = self.parent().model
# value = model.datas[sender.index[0]][sender.index[1]]
value = parameEditline.text()
pattern = re.compile(r'[^0-9\.-]+')
if not value or re.findall(pattern, str(value)):
values = objectTypeEditlayout.getEditlineValue()
if not values:
reply = QMessageBox.question(self.parent(),
'警告',
"请输入强制值或数字",
QMessageBox.Yes)
'警告',
"请输入强制值或数字",
QMessageBox.Yes)
return
for value in values:
# print(value)
pattern = re.compile(r'[^0-9\.-]+')
if not value or re.findall(pattern, str(value)):
reply = QMessageBox.question(self.parent(),
'警告',
"请输入强制值或数字",
QMessageBox.Yes)
return
index = model.datas[sender.index[0]][0]
print(index, self.parent().dbModel.__name__, self.parent().blcoknumber + 1)
def refreshData(self):
sender = self.sender()
model = self.parent().model
index = model.datas[sender.index[0]][0]
print(index, self.parent().dbModel.__name__, self.parent().blcoknumber + 1)
self.loadingDataWidget = LoadingDataWidget()
self.loadingDataWidget.loadData()
@ -226,42 +251,3 @@ class ComboBoxDelegate(QStyledItemDelegate):
def updateEditorGeometry(self, editor, option, index):
editor.setGeometry(option.rect)
class refreshButtonDelegate(QItemDelegate):
"""该类用于向单元格中添加按钮 任务表格"""
def __init__(self, parent=None):
super(refreshButtonDelegate, self).__init__(parent)
def paint(self, painter, option, index):
if not self.parent().indexWidget(index):
startActionBtn = QPushButton(
qtawesome.icon('mdi6.refresh', color='#1fbb6f'),
"",
self.parent()
)
if 'w' not in self.parent().model.datas[index.row()][4]:
return
startActionBtn.index = [index.row(), index.column()]
parameEditline = QLineEdit()
parameEditline.setObjectName('parameEditline')
boxLayout = QHBoxLayout()
boxLayout.addWidget(parameEditline)
boxLayout.addWidget(startActionBtn)
startActionBtn.clicked.connect(lambda: self.startAction(parameEditline))
startActionBtn.setObjectName('startActionBtn')
boxLayout.setContentsMargins(2, 0, 0, 2)
boxLayout.setAlignment(Qt.AlignCenter)
widget = QWidget()
widget.setLayout(boxLayout)
self.parent().setIndexWidget(
index,
widget
)

@ -23,9 +23,10 @@ class ParamsVHeader(QHeaderView):
class ParmView(QTableView):
def __init__(self, dbModel = None):
def __init__(self, dbModel = None, blcoknumber = None):
super().__init__()
self.dbModel = dbModel
self.blcoknumber = blcoknumber
self.setHeader()
self.setupUi()
self.setData()

@ -0,0 +1,70 @@
from PyQt5.QtWidgets import QLineEdit, QVBoxLayout
class ObjectTypeEditlayout(QVBoxLayout):
def __init__(self, objectType, dataType):
super().__init__()
self.objectType = objectType
self.dataType = dataType
self.editlineList = []
def initUI(self):
self.editline1 = QLineEdit()
self.editline2 = QLineEdit()
self.editline3 = QLineEdit()
self.editline4 = QLineEdit()
self.editline1.setObjectName('parameEditline')
self.editline2.setObjectName('parameEditline')
self.editline3.setObjectName('parameEditline')
self.editline4.setObjectName('parameEditline')
if self.objectType in ['SCALE_IN', 'SCALE_OUT', 'PV_SCALE']:
self.editline1.setPlaceholderText('请输入高标标度值')
self.editline2.setPlaceholderText('请输入低标标度值')
self.addWidget(self.editline1)
self.addWidget(self.editline2)
self.editlineList.extend([self.editline1, self.editline2])
if self.dataType == 'DS-36':
self.editline1.setPlaceholderText('请输入高标标度值')
self.editline2.setPlaceholderText('请输入低标标度值')
self.editline3.setPlaceholderText('请输入高标标度值')
self.editline4.setPlaceholderText('请输入高标标度值')
self.addWidget(self.editline1)
self.addWidget(self.editline2)
self.addWidget(self.editline3)
self.addWidget(self.editline4)
self.editlineList.extend([self.editline1, self.editline2, self.editline3, self.editline4])
if self.dataType == 'DS-50':
self.editline1.setPlaceholderText('请输入仿真转换块值状况')
self.editline2.setPlaceholderText('请输入仿真转换块值')
self.editline3.setPlaceholderText('启用或者警用仿真转换块(0:禁用, <>0:启用)')
self.addWidget(self.editline1)
self.addWidget(self.editline2)
self.addWidget(self.editline3)
self.editlineList.extend([self.editline1, self.editline2, self.editline3])
if self.dataType == '101':
self.editline1.setPlaceholderText('请输入值')
self.editline2.setPlaceholderText('请输入状态码')
self.addWidget(self.editline1)
self.addWidget(self.editline2)
self.editlineList.extend([self.editline1, self.editline2])
else:
self.editline1.setPlaceholderText('请输入值')
self.addWidget(self.editline1)
self.editlineList.append(self.editline1)
return self
def getEditlineValue(self):
valueList = []
for editline in self.editlineList:
value = editline.text()
valueList.append(value)
return valueList
Loading…
Cancel
Save