From 4ebb5d95bec05cf58c791eebfa8b7097b5360dd2 Mon Sep 17 00:00:00 2001 From: "ZHANGXUXU\\95193" <951937200@qq.com> Date: Tue, 24 Jun 2025 15:06:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=A4=E6=96=AD=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E5=90=8D=E6=98=AF=E5=90=A6=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UI/VarManages/ModbusModel.py | 30 +++++++++++++++++++--------- model/ProjectModel/VarManage.py | 35 ++++++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 10 deletions(-) diff --git a/UI/VarManages/ModbusModel.py b/UI/VarManages/ModbusModel.py index e39fde3..0a9586f 100644 --- a/UI/VarManages/ModbusModel.py +++ b/UI/VarManages/ModbusModel.py @@ -401,20 +401,32 @@ class VarButtonDelegate(QItemDelegate): if sender.oldName and ModbusVarManage.getByName(sender.oldName, modbusType): - if sender.oldName == name or [varMes[3] for varMes in model.datas].count(name) < 2: - ModbusVarManage.editVar(name = sender.oldName, Nname = name, des = des, - varType = varType, slaveID = slaveID, address = address, - min = min, max = max, order = order, modbusType = modbusType, varModel= varModel) + if sender.oldName == name: + # 名称未改变,直接执行修改变量操作 + ModbusVarManage.editVar(name=sender.oldName, Nname=name, des=des, + varType=varType, slaveID=slaveID, address=address, + min=min, max=max, order=order, modbusType=modbusType, varModel=varModel) else: + # 名称改变,检查新名称是否已存在 + if GlobalVarManager.isVarNameExist(name): + QMessageBox.information(self.parent(), '提示', '已有同名变量') + return + else: + # 执行修改变量操作 + ModbusVarManage.editVar(name=sender.oldName, Nname=name, des=des, + varType=varType, slaveID=slaveID, address=address, + min=min, max=max, order=order, modbusType=modbusType, varModel=varModel) + + else: + if GlobalVarManager.isVarNameExist(name): QMessageBox.information(self.parent(), '提示', '已有同名变量') return - else: - res = ModbusVarManage.createVar(varName = name, varType = varType, des = des, + else: + ModbusVarManage.createVar(varName = name, varType = varType, des = des, address = address, slaveID = slaveID, min = min, max = max, order = order, modbusType = modbusType, varModel= varModel) - if res: - QMessageBox.information(self.parent(), '提示', '已有同名变量') - return + + sender.setIcon(qtawesome.icon('fa.pencil', color='#4c8cf2')) rowIndex = sender.index[0] varMes = ModbusVarManage.getByName(name, modbusType) diff --git a/model/ProjectModel/VarManage.py b/model/ProjectModel/VarManage.py index 83efd30..d3ab85d 100644 --- a/model/ProjectModel/VarManage.py +++ b/model/ProjectModel/VarManage.py @@ -525,4 +525,37 @@ class HartSimulateVarManage(object): return False def initVar(self): - self.createVar(varName='name', des='TC', varModel='本地值') \ No newline at end of file + self.createVar(varName='name', des='TC', varModel='本地值') + +class GlobalVarManager(object): + # 所有支持的变量模型类列表 + allVarClass = [ + ModbusTcpMasterVar, ModbusTcpSlaveVar, ModbusRtuMasterVar, ModbusRtuSlaveVar, + HartVar, TcRtdVar, AnalogVar, HartSimulateVar + ] + + @classmethod + def getAllVarNames(cls): + """获取所有协议模型中存在的变量名(去重集合)""" + allVarNames = set() + + for varClass in cls.allVarClass: + try: + # 查询该模型类的所有变量名 + query = varClass.select(varClass.varName) + names = {var.varName for var in query} + allVarNames.update(names) + except Exception as e: + print(f"查询 {varClass.__name__} 变量名失败: {str(e)}") + + return allVarNames + + @classmethod + def isVarNameExist(cls, varName): + """检查新变量名是否在任意协议模型中已存在""" + existingNames = cls.getAllVarNames() + print(varName,existingNames ) + if str(varName) in existingNames: + return True + else: + return False \ No newline at end of file