main
zhangxuxutm 2 years ago
parent ba19b2fe1c
commit 2fc4ea7e40

@ -21,8 +21,8 @@ class AreaTabWidget(QMainWindow):
# 设置主窗口的中心部分为 QTabWidget
self.setCentralWidget(self.areaTabWidget)
def initAreaTab(self, dataType, order, channelBytes, deviceName = False):
widgetList = self.addAreaTab(deviceName)
def initAreaTab(self, dataType, order, channelBytes):
widgetList = self.addAreaTab()
widgetList[0].setCurrentIndex(dataType)
widgetList[1].setCurrentIndex(order)
widgetList[2].setText(channelBytes)
@ -30,7 +30,7 @@ class AreaTabWidget(QMainWindow):
self.addAreaWidget(widgetList)
def addAreaTab(self, deviceName):
def addAreaTab(self):
areaTabWidget = QWidget()
tabIndex = self.areaTabWidget.count()
@ -78,16 +78,15 @@ class AreaTabWidget(QMainWindow):
delAreaBtn.clicked.connect(self.removeAreaTab)
widgetList.extend([dataTypeCombox, orderCombox, byteLineEdit, areaLayout, deviceName])
widgetList.extend([dataTypeCombox, orderCombox, byteLineEdit, areaLayout])
areaTabWidget.setLayout(mainLayout)
return widgetList
def removeAreaTab(self):
# 获取 QTabWidget 并从中删除标签页
deviceName = self.areaTabWidget.parent().parent().parent().parent().parent().windowTitle()
index = self.areaTabWidget.currentIndex()
print(index)
if index != -1:
self.areaTabWidget.removeTab(index)
@ -100,16 +99,21 @@ class AreaTabWidget(QMainWindow):
order = self.dataTypeTranslate(widgetList[1].currentText())
byteLineEdit = widgetList[2].text()
areaLayout = widgetList[3]
deviceName = widgetList[4]
deviceName = self.areaTabWidget.parent().parent().parent().parent().parent().windowTitle()
while areaLayout.count():
item = areaLayout.takeAt(0)
widget = item.widget()
if widget:
widget.setParent(None)
if len(byteLineEdit) == 0:
QMessageBox.warning(self, '警告', '请输入字节长度。')
else:
for i in range(3):
widgetList[i].setEnabled(False)
# for i in range(3):
# widgetList[i].setEnabled(False)
if dataType in ['AI', 'AO']:
@ -166,8 +170,16 @@ class AreaTabWidget(QMainWindow):
self.widgetList.append([areaLabel2, areaLineEdit, editbtn])
areaLayout.addItem(self.verticalSpacer, int(byteLineEdit) * 8 ,0)
if deviceName:
DevicesManange.addAreas(dataType, order, byteLineEdit, deviceName)
index = self.areaTabWidget.currentIndex() + 1
areaId = DevicesManange.getAreaID(deviceName)
if index in areaId:
DevicesManange.updataAreas(dataType, order, byteLineEdit, deviceName, index)
else:
DevicesManange.addAreas(dataType, order, byteLineEdit, deviceName)
def dataTypeTranslate(self, order):
self.dataTypeDict = {'不转换': 'ABCD', '字节转换': 'DCBA', '字转换': 'CDAB', '字内转换': 'BADC'}

@ -80,7 +80,7 @@ class MainWindow(QMainWindow):
areaMainWindow.addToolBar(toolbar)
addAreaBtn = QAction("添加通道", areaMainWindow)
addAreaBtn.setObjectName("addDiviceBtn")
addAreaBtn.triggered.connect(lambda: areaTabWidget.addAreaTab(windowTitle))
addAreaBtn.triggered.connect(areaTabWidget.addAreaTab)
toolbar.addAction(addAreaBtn)
#为mainwindow添加右滑动条
@ -113,7 +113,7 @@ class MainWindow(QMainWindow):
for area in areas:
dataType, order = self.tran(area["type"], area["order"])
channelBytes = area["bytes"]
print(dataType, type(dataType))
areaTabWidget.initAreaTab(dataType, order, channelBytes)
def createDeciveWidget(self):

@ -160,6 +160,20 @@ class DevicesManange():
areaJson = json.dumps(jsonCon)
DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute()
@classmethod
def updataAreas(self, type, order, bytes, deviceName, index):
if DeviceDB.getByName(deviceName=deviceName) is None:
return False
else:
jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson)
for area in jsonCon:
if index == area["id"]:
area["type"] = type
area["order"] = order
area["bytes"] = bytes
areaJson = json.dumps(jsonCon)
DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute()
@classmethod
def getAreaID(self, deviceNames):
deviceName = deviceNames

Loading…
Cancel
Save