@ -262,7 +262,7 @@ class VarButtonDelegate(QItemDelegate):
comboBox . addItem ( ' CDAB ' , 2 )
comboBox . addItem ( ' BADC ' , 3 )
comboBox . addItem ( ' DCBA ' , 4 )
comboBox . setCurrentText ( self . parent ( ) . model . datas [ index . row ( ) ] [ index . column ( ) ] )
comboBox . setCurrentText ( str ( self . parent ( ) . model . datas [ index . row ( ) ] [ index . column ( ) ] ) )
# comboBox.setMinimumWidth(30)
@ -375,21 +375,31 @@ class VarButtonDelegate(QItemDelegate):
fucationDelegate = self . parent ( ) . itemDelegate ( fucationIndex )
fucationCheckbox = getattr ( fucationDelegate , fucationCbRow )
varModelCbRow = str ( ' cb ' + str ( sender . index [ 0 ] ) + str ( 10 ) )
varModelIndex = self . parent ( ) . model . index ( sender . index [ 0 ] , 10 )
varModelDelegate = self . parent ( ) . itemDelegate ( varModelIndex )
varModelCheckbox = getattr ( varModelDelegate , varModelCbRow )
if sender . isEdit :
sender . setIcon ( qtawesome . icon ( ' fa.save ' , color = ' #1fbb6f ' ) )
sender . isEdit = False
sender . oldName = model . datas [ sender . index [ 0 ] ] [ 3 ]
model . editableList . append ( sender . index [ 0 ] )
fucationCheckbox . setEnabled ( True )
varModelCheckbox . setEnabled ( True )
self . parent ( ) . viewport ( ) . update ( )
else :
varMes = model . datas [ sender . index [ 0 ] ]
name , des , varType , slaveID , address , min , max , order = str ( varMes [ 3 ] ) , str ( varMes [ 4 ] ) , str ( varMes [ 5 ] ) , str ( varMes [ 6 ] ) , str ( varMes [ 7 ] ) , str ( varMes [ 8 ] ) , str ( varMes [ 9 ] ) , str ( varMes [ - 1 ] )
name , des , varType , slaveID , address , min , max , varModel, order = str ( varMes [ 3 ] ) , str ( varMes [ 4 ] ) , str ( varMes [ 5 ] ) , str ( varMes [ 6 ] ) , str ( varMes [ 7 ] ) , str ( varMes [ 8 ] ) , str ( varMes [ 9 ] ) , str ( varMes [ 10 ] ) , str ( varMes [ - 1 ] )
# print(name, des, varType, slaveID, address, min, max, order)
if varType == ' ' :
varType = ' 0 '
varType = 0
if varModel == ' ' :
varModel = 0
if not name :
reply = QMessageBox . question ( self . parent ( ) ,
' 警告 ' ,
@ -402,14 +412,14 @@ class VarButtonDelegate(QItemDelegate):
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 )
min = min , max = max , order = order , modbusType = modbusType , varModel = varModel )
else :
QMessageBox . information ( self . parent ( ) , ' 提示 ' , ' 已有同名变量 ' )
return
else :
res = ModbusVarManage . createVar ( varName = name , varType = varType , des = des ,
address = address , slaveID = slaveID , min = min ,
max = max , order = order , modbusType = modbusType )
max = max , order = order , modbusType = modbusType , varModel = varModel )
if res :
QMessageBox . information ( self . parent ( ) , ' 提示 ' , ' 已有同名变量 ' )
return
@ -424,6 +434,7 @@ class VarButtonDelegate(QItemDelegate):
sender . isEdit = True
fucationCheckbox . setEnabled ( False )
varModelCheckbox . setEnabled ( False )
model . editableList . remove ( sender . index [ 0 ] )
self . parent ( ) . viewport ( ) . update ( )
@ -499,4 +510,58 @@ class ModbusTypeBox(QItemDelegate):
if index in [ 2 , 3 ] :
index + = 1
self . parent ( ) . model . datas [ sender . index [ 0 ] ] [ sender . index [ 1 ] ] = index
class VarModelBox ( QItemDelegate ) :
def __init__ ( self , parent = None , comBoxColumn = 10 ) :
super ( VarModelBox , self ) . __init__ ( parent )
self . comBoxColumn = comBoxColumn
def paint ( self , painter , option , index ) :
#本地值、模拟值、远程值 对应 0, 1, 2
if ( index . column ( ) == self . comBoxColumn ) and index . row ( ) not in self . parent ( ) . model . editableList :
data = self . parent ( ) . model . datas [ index . row ( ) ]
comBox = str ( ' cb ' + str ( index . row ( ) ) + str ( index . column ( ) ) )
setattr ( self , comBox , QComboBox ( ) )
comboBox = getattr ( self , comBox )
items = [ ' 本地值 ' , ' 模拟值 ' , ' 远程值 ' ]
comboBox . addItems ( items )
comboxIndex = self . parent ( ) . model . datas [ index . row ( ) ] [ index . column ( ) ]
if comboxIndex in [ 0 , 1 , 2 ] :
comboBox . setCurrentIndex ( int ( comboxIndex ) )
else :
comboBox . setCurrentIndex ( 0 )
comboBox . currentIndexChanged . connect ( self . indexChange )
comboBox . setObjectName ( ' ModbusTypeBox ' )
comboBox . setEditable ( True )
comboBox . lineEdit ( ) . setAlignment ( Qt . AlignCenter )
# comboBox.setMinimumWidth(200)
# comboBox.setEnabled(False)
hboxLayout = QHBoxLayout ( )
hboxLayout . addWidget ( comboBox )
hboxLayout . setContentsMargins ( 0 , 0 , 0 , 0 )
# hboxLayout.setAlignment(Qt.AlignCenter)
comboBox . index = [ index . row ( ) , index . column ( ) ]
row = index . row ( )
if row % 2 == 0 :
comboBox . setStyleSheet ( " QComboBox { background-color: #EFEFEF; height: 40px; } " )
else :
comboBox . setStyleSheet ( " QComboBox { background-color: #e9e7e3; height: 40px; } " )
if str ( data [ index . column ( ) ] ) :
comboBox . setEnabled ( False )
else :
comboBox . setEnabled ( True )
widget = QWidget ( )
widget . setLayout ( hboxLayout )
self . parent ( ) . setIndexWidget (
index ,
widget
)
self . parent ( ) . openPersistentEditor ( index )
def indexChange ( self ) :
sender = self . sender ( )
index = sender . currentIndex ( )
self . parent ( ) . model . datas [ sender . index [ 0 ] ] [ sender . index [ 1 ] ] = index