From edd00be72e37669c80f0d950abfad381b877487c Mon Sep 17 00:00:00 2001 From: "ADMINISTRATOR\\Administrator" <951937200@qq.com> Date: Mon, 17 Jun 2024 19:11:52 +0800 Subject: [PATCH] 0617 --- UI/BlockParameterManageWidget.py | 90 ++++++++++++++++++++++--------- UI/BlockParameterModel.py | 15 ++++-- UI/BlockParameterView.py | 6 +-- model/ProjectModel/BlockManage.py | 12 +++-- 4 files changed, 86 insertions(+), 37 deletions(-) diff --git a/UI/BlockParameterManageWidget.py b/UI/BlockParameterManageWidget.py index 86c6ce9..3ee54d3 100644 --- a/UI/BlockParameterManageWidget.py +++ b/UI/BlockParameterManageWidget.py @@ -10,7 +10,7 @@ from utils.DBModels.DeviceParModels import * from utils import Globals from UI.LoadingDataWidget import LoadingDataWidget -from model.ProjectModel.BlockManage import BlockManage, BlockType +from model.ProjectModel.BlockManage import BlockManage, BlockType, TBType @@ -61,7 +61,7 @@ class DynamicAddBlock(QHBoxLayout): self.buttonlist = [] self.blockViewlist = [] self.tbList = ['PressureTranslationBlock', 'TemperatureTranslationBlock', 'LevelTranslationBlock', 'FlowTranslationBlock'] #存放四个转换块 - self.enumList = [BlockType.TB.pressureTB, BlockType.TB.tempTB, BlockType.TB.levelTB, BlockType.TB.flowTB] + self.enumList = [TBType.pressureTB, TBType.tempTB, TBType.levelTB, TBType.flowTB] self.initUI() def initUI(self): @@ -150,7 +150,24 @@ class DynamicAddBlock(QHBoxLayout): self.parameStackWidget.setCurrentIndex(stackIndex) - + def deleteLater(self): + while self.count(): + item = self.takeAt(0) + widget = item.widget() + if widget: + widget.deleteLater() + layout = item.layout() + if layout: + layout.deleteLater() + + if self.parameStackWidget: + while self.parameStackWidget.count(): + widget = self.parameStackWidget.widget(0) + self.parameStackWidget.removeWidget(widget) + widget.deleteLater() + self.parameStackWidget.deleteLater() + + super().deleteLater() class BlockParameterManageWidget(QWidget): @@ -162,7 +179,7 @@ class BlockParameterManageWidget(QWidget): def initUI(self): self.mainlayout = QVBoxLayout() - + self.settingLayout = QHBoxLayout() self.deviceAddressLabel = QLabel('从站地址') self.deviceAddressLabel.setObjectName('deviceAddressLabel') @@ -203,33 +220,56 @@ class BlockParameterManageWidget(QWidget): self.setLayout(self.mainlayout) def loadBlackData(self): - address = self.deviceAddressEdit.text() - # print(address) - if address: - pattern = re.compile(r'^(?:[1-9]|[1-9][0-9]|1[0-1][0-9]|12[0-5])$') - match = pattern.match(address) - if not match: - QMessageBox.warning(self, '提示', '请输入1 - 125。') + if self.initUIstat: + address = self.deviceAddressEdit.text() + # print(address) + if address: + pattern = re.compile(r'^(?:[1-9]|[1-9][0-9]|1[0-1][0-9]|12[0-5])$') + match = pattern.match(address) + if not match: + QMessageBox.warning(self, '提示', '请输入1 - 125。') + return + if self.initUIstat: + self.splitter.deleteLater() + self.widget.deleteLater() + self.splitter = QSplitter() + self.blockManage = BlockManage(int(address)) + Globals.setValue('blockManage', self.blockManage) + blocklist = self.blockManage.getBlockNums() + self.blockLayout = DynamicAddBlock(blocklist) + self.settingLayout.addLayout(self.blockLayout, 7) + self.settingLayout.addWidget(self.splitter, 11) + self.mainlayout.addWidget(self.blockLayout.parameStackWidget, 20) + self.initUIstat = False + else: + reply = QMessageBox.question(self.parent(), + '警告', + "请输入从站地址", + QMessageBox.Yes) return - if self.initUIstat: + else: + reply = QMessageBox.question(self, '确定', '确定更换站地址吗?', + QMessageBox.Yes | QMessageBox.No, QMessageBox.No) + if reply == QMessageBox.Yes: + self.blockLayout.deleteLater() self.splitter.deleteLater() - self.widget.deleteLater() - self.blockManage = BlockManage(int(address)) - Globals.setValue('blockManage', self.blockManage) + self.splitter = QSplitter() blocklist = self.blockManage.getBlockNums() self.blockLayout = DynamicAddBlock(blocklist) self.settingLayout.addLayout(self.blockLayout, 7) - self.settingLayout.addWidget(QSplitter(), 11) + self.settingLayout.addWidget(self.splitter, 11) self.mainlayout.addWidget(self.blockLayout.parameStackWidget, 20) - self.initUIstat = False - else: - reply = QMessageBox.question(self.parent(), - '警告', - "请输入从站地址", - QMessageBox.Yes) - return + else: + return def refreshData(self): + if self.initUIstat: + reply = QMessageBox.question(self.parent(), + '警告', + "请先连接设备", + QMessageBox.Yes) + return + self.loadingDataWidget = LoadingDataWidget() self.loadingDataWidget.loadData() blockView = self.blockLayout.parameStackWidget.currentWidget() @@ -237,8 +277,8 @@ class BlockParameterManageWidget(QWidget): model = blockView.model model.updateColumn(5, '查询中sdadadsda\r\nsdasdsasasad\r\nasdsadsad...') blockName = blockView.blockType - blcoknumber = blockView.blcoknumber + 1 - print(blockName, blcoknumber) + blcokIndex = blockView.blcokIndex + diff --git a/UI/BlockParameterModel.py b/UI/BlockParameterModel.py index 432ef5a..1f45c5f 100644 --- a/UI/BlockParameterModel.py +++ b/UI/BlockParameterModel.py @@ -208,14 +208,20 @@ class VarButtonDelegate(QItemDelegate): 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) + blockView = self.parent() + model = blockView.model + index = model.datas[sender.index[0]][0] + blockName = blockView.blockType + blcokIndex = blockView.blcokIndex + print(blockName, blcokIndex, index) + self.loadingDataWidget = LoadingDataWidget() self.loadingDataWidget.loadData() self.parent().resizeHeader() + + class ComboBoxDelegate(QStyledItemDelegate): def __init__(self, comboxIndex, parent=None): super(ComboBoxDelegate, self).__init__(parent) @@ -252,5 +258,6 @@ class ComboBoxDelegate(QStyledItemDelegate): editor.setGeometry(option.rect) def changeModel(self, index): - print(index,111) + # print(index,111) + pass diff --git a/UI/BlockParameterView.py b/UI/BlockParameterView.py index 7f82140..7087bdc 100644 --- a/UI/BlockParameterView.py +++ b/UI/BlockParameterView.py @@ -29,10 +29,10 @@ class ParamsVHeader(QHeaderView): class ParmView(QTableView): - def __init__(self, dbModel = None, blcoknumber = None, blockType = None): + def __init__(self, dbModel = None, blcokIndex = None, blockType = None): super().__init__() self.dbModel = dbModel - self.blcoknumber = blcoknumber + self.blcokIndex = blcokIndex self.blockType = blockType self.setHeader() self.setupUi() @@ -42,7 +42,7 @@ class ParmView(QTableView): self.setItemDelegateForColumn(6, VarButtonDelegate(self)) self.setItemDelegateForColumn(5, ComboBoxDelegate(self)) - self.model = VarTableModel(['相对索引', '参数名', '描述', '数据类型', '访问', '当前值', '输入值'], [], table = self) + self.model = VarTableModel(['索引', '参数名', '描述', '数据类型', '访问', '当前值', '输入值'], [], table = self) def setupUi(self): self.setShowGrid(True) diff --git a/model/ProjectModel/BlockManage.py b/model/ProjectModel/BlockManage.py index 78f8210..794f21b 100644 --- a/model/ProjectModel/BlockManage.py +++ b/model/ProjectModel/BlockManage.py @@ -9,14 +9,16 @@ from protocol.ModBus.DPV1Master import DPV1Master from model.ProjectModel.ParmManage import Parm class BlockType(Enum): - class TB(Enum): - flowTB = -1 - tempTB = -2 - levelTB = -3 # 物位转换块 - pressureTB = -4 + TB = 1 PB = 0 FB = 2 +class TBType(Enum): + flowTB = -1 + tempTB = -2 + levelTB = -3 # 物位转换块 + pressureTB = -4 + class BlockManage(): _instance = None _dpv1Master = None