diff --git a/Static/Main.qss b/Static/Main.qss index 8478810..3ea0e24 100644 --- a/Static/Main.qss +++ b/Static/Main.qss @@ -263,7 +263,7 @@ QPushButton#parameBtn{ font-family: ".SFNSDisplay-Medium"; - font-size: 17px; + font-size: 20px; font-weight: 520; @@ -292,6 +292,18 @@ QPushButton#parameBtn:checked{ } +QPushButton#parameBtn:pressed{ + + font: bold; + + border: none; + + background-color: #04942c; + + margin-bottom: -3px; + +} + QPushButton#tbparameBtn{ border: none; diff --git a/Static/PA块信息表.xlsx b/Static/PA块信息表.xlsx index 077eaee..1429c2e 100644 Binary files a/Static/PA块信息表.xlsx and b/Static/PA块信息表.xlsx differ diff --git a/Static/pict.png b/Static/pict.png new file mode 100644 index 0000000..a872dc3 Binary files /dev/null and b/Static/pict.png differ diff --git a/UI/BlockParameterManageWidget.py b/UI/BlockParameterManageWidget.py index 19e4147..ca367f5 100644 --- a/UI/BlockParameterManageWidget.py +++ b/UI/BlockParameterManageWidget.py @@ -1,5 +1,6 @@ import re import qtawesome +from PyQt5.QtGui import QPixmap, QPainter from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QStyledItemDelegate, QStyle, QComboBox, QMessageBox, QPushButton,QStackedWidget, QLineEdit \ , QVBoxLayout, QHBoxLayout, QWidget, QLabel, QSplitter, QButtonGroup, QDialog @@ -15,6 +16,16 @@ from UI.EditAddressWidget import EditAddressWidget from model.ProjectModel.BlockManage import BlockManage, BlockType, TBType +class ShowImage(QWidget): + def __init__(self, image_path): + super().__init__() + self.image_path = image_path + self.pixmap = QPixmap(self.image_path) + + def paintEvent(self, event): + painter = QPainter(self) + painter.drawPixmap(self.rect(), self.pixmap) + @@ -98,7 +109,7 @@ class DynamicAddBlock(QHBoxLayout): fblockBtn.setObjectName("parameBtn") fblockBtn.setIcon(qtawesome.icon('fa.th-large', color='#1fbb6f')) fblockBtn.clicked.connect(lambda _, fbbtn = fblockBtn: self.switchParameterWidget(fbbtn)) - # self.addWidget(fblockBtn, 3) + self.addWidget(fblockBtn, 3) self.buttonlist.append(fblockBtn) aiFunctionBlockView = ParmView(AIFunctionBlock, i, BlockType.FB) self.blockViewlist.append(aiFunctionBlockView) @@ -190,32 +201,32 @@ class BlockParameterManageWidget(QWidget): self.deviceAddressEdit.returnPressed.connect(self.loadBlackData) self.deviceAddressEdit.setObjectName("deviceAddressEdit") - self.confirmBtn = QPushButton('确定') - self.confirmBtn.setIcon(qtawesome.icon('fa5s.check-circle', color='#1fbb6f')) + self.confirmBtn = QPushButton('连接设备') + self.confirmBtn.setIcon(qtawesome.icon('mdi.connection', color='#1fbb6f')) self.confirmBtn.clicked.connect(self.loadBlackData) self.confirmBtn.setObjectName("parameBtn") self.refershDataBtn = QPushButton('加载数据') - self.refershDataBtn.setIcon(qtawesome.icon('fa5s.check-circle', color='#1fbb6f')) + self.refershDataBtn.setIcon(qtawesome.icon('mdi6.reload', color='#1fbb6f')) self.refershDataBtn.clicked.connect(self.refreshData) self.refershDataBtn.setObjectName("parameBtn") - self.deviceAddressSearchBtn = QPushButton('查找') + self.deviceAddressSearchBtn = QPushButton('搜索站地址') self.deviceAddressSearchBtn.setIcon(qtawesome.icon('fa.search', color='#1fbb6f')) self.deviceAddressSearchBtn.clicked.connect(self.searchAddress) self.deviceAddressSearchBtn.setObjectName("parameBtn") self.editAddressBtn = QPushButton('修改站地址') - self.editAddressBtn.setIcon(qtawesome.icon('fa.search', color='#1fbb6f')) + self.editAddressBtn.setIcon(qtawesome.icon('fa.edit', color='#1fbb6f')) self.editAddressBtn.clicked.connect(self.editAddress) self.editAddressBtn.setObjectName("parameBtn") self.settingLayout.addWidget(self.deviceAddressLabel, 1) self.settingLayout.addWidget(self.deviceAddressEdit, 1) self.settingLayout.addWidget(self.confirmBtn, 1) - self.settingLayout.addWidget(self.refershDataBtn, 1) self.settingLayout.addWidget(self.deviceAddressSearchBtn, 1) self.settingLayout.addWidget(self.editAddressBtn, 1) + self.settingLayout.addWidget(self.refershDataBtn, 1) # self.settingLayout.addLayout(self.blockLayout) self.splitter = QSplitter() @@ -223,7 +234,7 @@ class BlockParameterManageWidget(QWidget): self.mainlayout.addLayout(self.settingLayout,1) - self.widget = QWidget() + self.widget = ShowImage('Static/pict.png') self.mainlayout.addWidget(self.widget, 20) @@ -237,7 +248,7 @@ class BlockParameterManageWidget(QWidget): pattern = re.compile(r'^(?:[1-9]|[1-9][0-9]|1[0-1][0-9]|12[0-6])$') match = pattern.match(address) if not match: - QMessageBox.warning(self, '提示', '请输入1 - 126。') + QMessageBox.warning(self, '提示', '请输入2 - 126。') return if self.initUIstat: try: @@ -320,16 +331,8 @@ class BlockParameterManageWidget(QWidget): newAddress = int(self.editAddressWidget.editAddressEdit.text()) self.blockManage.DPV1Master.editDevAddress(oldAddress, newAddress) - - # if self.initUIstat: - # reply = QMessageBox.question(self.parent(), - # '警告', - # "请先连接设备", - # QMessageBox.Yes) - # return - - - + + def searchAddress(self): self.searchAddressWidget = SearchAddressWidget(self.deviceAddressEdit) diff --git a/UI/BlockParameterModel.py b/UI/BlockParameterModel.py index 58d6189..1ded440 100644 --- a/UI/BlockParameterModel.py +++ b/UI/BlockParameterModel.py @@ -48,7 +48,7 @@ class VarTableModel(QAbstractTableModel): print("列索引超出范围") return # for row in range(self.rowCount()): - self.datas[row][5] = value + self.datas[row][6] = value self.table.proxy.invalidate() # self.layoutChanged.emit() # 通知视图数据已更改 # self.dataChanged.emit() @@ -78,7 +78,7 @@ class VarTableModel(QAbstractTableModel): return QtGui.QColor('#1A1A1A') if role == Qt.DisplayRole or role == Qt.EditRole: - if QModelIndex.row() in self.editableList or 'w' in self.datas[QModelIndex.row()][4]: + if QModelIndex.row() in self.editableList or 'w' in self.datas[QModelIndex.row()][5]: return self.datas[QModelIndex.row()][QModelIndex.column()] if role != Qt.DisplayRole: return QVariant() @@ -111,11 +111,11 @@ class VarTableModel(QAbstractTableModel): def flags(self, index): # if index.column() == 0: # return Qt.ItemIsEnabled | Qt.ItemIsUserCheckable - if index.row() in self.editableList and index.column() or index.column() == 6: + if index.row() in self.editableList and index.column() or index.column() == 7: return Qt.ItemIsEnabled | Qt.ItemIsUserCheckable | Qt.ItemIsEditable - if 'w' in self.datas[index.row()][4] and index.column() == 5: + if 'w' in self.datas[index.row()][5] and index.column() == 6: return Qt.ItemIsEnabled | Qt.ItemIsEditable return Qt.ItemIsEnabled @@ -133,7 +133,7 @@ class VarTableModel(QAbstractTableModel): def updateValue(self, valueList): for index, value in enumerate(valueList): - self.datas[index][5] = value + self.datas[index][6] = value self.table.proxy.invalidate() @@ -164,14 +164,14 @@ class VarButtonDelegate(QItemDelegate): refreshButton.clicked.connect(self.refreshData) refreshButton.index = [index.row(), index.column()] - readORwirte = self.parent().model.datas[index.row()][4] + readORwirte = self.parent().model.datas[index.row()][5] if 'w' not in readORwirte: boxLayout.addWidget(QSplitter()) boxLayout.addWidget(refreshButton) boxLayout.addWidget(QSplitter()) else: - dataType = self.parent().model.datas[index.row()][3] - objectType = self.parent().model.datas[index.row()][1] + dataType = self.parent().model.datas[index.row()][4] + objectType = self.parent().model.datas[index.row()][2] editlineLayout = ObjectTypeEditlayout(objectType, dataType) @@ -226,8 +226,7 @@ class VarButtonDelegate(QItemDelegate): model = blockView.model blockType = blockView.blockType blockIndex = blockView.blcokIndex - parmIndex = model.datas[sender.index[0]][0] - + parmIndex = model.datas[sender.index[0]][1] blockManage = Globals.getValue('blockManage') values = [] #修改单位 @@ -251,7 +250,7 @@ class VarButtonDelegate(QItemDelegate): else: values = objectTypeEditlayout.getEditlineValue() - dataType = model.datas[sender.index[0]][3] + dataType = model.datas[sender.index[0]][4] if not values: reply = QMessageBox.question(self.parent(), '警告', @@ -276,7 +275,7 @@ class VarButtonDelegate(QItemDelegate): sender = self.sender() blockView = self.parent() model = blockView.model - parmIndex = model.datas[sender.index[0]][0] + parmIndex = model.datas[sender.index[0]][1] blockType = blockView.blockType blockIndex = blockView.blcokIndex diff --git a/UI/BlockParameterView.py b/UI/BlockParameterView.py index 25f7200..4a74ad4 100644 --- a/UI/BlockParameterView.py +++ b/UI/BlockParameterView.py @@ -18,19 +18,19 @@ class ParamsVHeader(QHeaderView): super(QHeaderView, self).resizeEvent(event) for index, content in enumerate(self.datas): self.setSectionResizeMode(index, QHeaderView.Fixed) - height = 50 * (content[2].count('\r\n') + 1) + height = 50 * (content[3].count('\r\n') + 1) # valueHeight = 50 * (content[5].count('\r\n') + 1) # height = desHeight if desHeight > valueHeight else valueHeight # print(height, index) - if content[3] == 'DS-36': + if content[4] == 'DS-36': height = height if height > 5 * 50 else 250 print(height) # self.resizeSection(index, height) - if content[3] == 'DS-37': + if content[4] == 'DS-37': height = height if height > 4 * 50 else 200 - if content[3] == 'DS-39': + if content[4] == 'DS-39': height = height if height > 7 * 50 else 350 - if content[3] == 'DS-50': + if content[4] == 'DS-50': height = height if height > 4 * 50 else 200 # self.resizeSection(index, height) self.resizeSection(index, height) @@ -48,10 +48,10 @@ class ParmView(QTableView): self.setData() def setHeader(self): - self.setItemDelegateForColumn(6, VarButtonDelegate(self)) + self.setItemDelegateForColumn(7, VarButtonDelegate(self)) # self.setItemDelegateForColumn(5, ComboBoxDelegate(self)) - self.model = VarTableModel(['索引', '参数名', '描述', '数据类型', '访问', '当前值', '输入值'], [], table = self) + self.model = VarTableModel(['序号','索引', '参数名', '描述', '数据类型', '访问', '当前值', '输入值'], [], table = self) def setupUi(self): self.setShowGrid(True) @@ -69,7 +69,7 @@ class ParmView(QTableView): self.proxy.setSourceModel(self.model) self.setModel(self.proxy) - self.setCustomColumnWidths([1, 3, 8, 2, 2, 2, 3]) + self.setCustomColumnWidths([1, 1, 3, 8, 2, 2, 2, 3]) # self.header.checkClicked.connect(self.model.headerClick) @@ -94,12 +94,12 @@ class ParmView(QTableView): # self.datas = PressureTranslationBlock.getallParame() self.datas = self.dbModel.getallParame() for index, data in enumerate(self.datas): - data[5] = '' - desc = data[2].replace('\r\n', '').replace('\n', '') + data[6] = '' + desc = data[3].replace('\r\n', '').replace('\n', '') lines = [desc[i:i+40] + "\r\n" for i in range(0, len(desc), 40)] # 合并列表为一个字符串,移除最后一个换行符 result = "".join(lines).rstrip("\r\n") - data[2] = result + data[3] = result data = data + ['', '', ''] self.model.append_data(data) self.resizeHeader() diff --git a/model/ProjectModel/BlockManage.py b/model/ProjectModel/BlockManage.py index 75a8cd4..03d26f8 100644 --- a/model/ProjectModel/BlockManage.py +++ b/model/ProjectModel/BlockManage.py @@ -52,8 +52,8 @@ class BlockManage(): def __init__(self, address = None): self.address = address if address: - # pass - self.initBlocks() + pass + # self.initBlocks() @property def DPV1Master(self): @@ -141,8 +141,8 @@ class BlockManage(): return block def getBlockNums(self): - # return [1,1,1] - return [len(self.blockDict[BlockType.PB]), len(self.blockDict[BlockType.TB]), len(self.blockDict[BlockType.FB])] + return [1,1,1] + # return [len(self.blockDict[BlockType.PB]), len(self.blockDict[BlockType.TB]), len(self.blockDict[BlockType.FB])] @classmethod def searchSlave(self, callback): diff --git a/utils/DBModels/DeviceParModels.py b/utils/DBModels/DeviceParModels.py index a2bd21e..b8a983b 100644 --- a/utils/DBModels/DeviceParModels.py +++ b/utils/DBModels/DeviceParModels.py @@ -33,7 +33,7 @@ class PressureTranslationBlock(BaseModel): return l = [] for x in params: - l.append([x.index, x.paramName, x.description, x.dataType, x.accessType, x.dataSize]) + l.append([x.id, x.index, x.paramName, x.description, x.dataType, x.accessType, x.dataSize]) return l @classmethod