增加判断变量名是否重复

main
ZHANGXUXU\95193 4 months ago
parent 8d6bc61d44
commit 4ebb5d95be

@ -401,20 +401,32 @@ class VarButtonDelegate(QItemDelegate):
if sender.oldName and ModbusVarManage.getByName(sender.oldName, modbusType): if sender.oldName and ModbusVarManage.getByName(sender.oldName, modbusType):
if sender.oldName == name or [varMes[3] for varMes in model.datas].count(name) < 2: if sender.oldName == name:
ModbusVarManage.editVar(name = sender.oldName, Nname = name, des = des, # 名称未改变,直接执行修改变量操作
varType = varType, slaveID = slaveID, address = address, ModbusVarManage.editVar(name=sender.oldName, Nname=name, des=des,
min = min, max = max, order = order, modbusType = modbusType, varModel= varModel) varType=varType, slaveID=slaveID, address=address,
min=min, max=max, order=order, modbusType=modbusType, varModel=varModel)
else: 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(), '提示', '已有同名变量') QMessageBox.information(self.parent(), '提示', '已有同名变量')
return return
else: else:
res = ModbusVarManage.createVar(varName = name, varType = varType, des = des, ModbusVarManage.createVar(varName = name, varType = varType, des = des,
address = address, slaveID = slaveID, min = min, address = address, slaveID = slaveID, min = min,
max = max, order = order, modbusType = modbusType, varModel= varModel) max = max, order = order, modbusType = modbusType, varModel= varModel)
if res:
QMessageBox.information(self.parent(), '提示', '已有同名变量')
return
sender.setIcon(qtawesome.icon('fa.pencil', color='#4c8cf2')) sender.setIcon(qtawesome.icon('fa.pencil', color='#4c8cf2'))
rowIndex = sender.index[0] rowIndex = sender.index[0]
varMes = ModbusVarManage.getByName(name, modbusType) varMes = ModbusVarManage.getByName(name, modbusType)

@ -526,3 +526,36 @@ class HartSimulateVarManage(object):
def initVar(self): def initVar(self):
self.createVar(varName='name', des='TC', varModel='本地值') 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
Loading…
Cancel
Save