From 956b67a8223ad4ee0a43a4b19b3772d4d915f9c6 Mon Sep 17 00:00:00 2001 From: zhangxuxutm <951937200@qq.com> Date: Sun, 10 Sep 2023 21:14:42 +0800 Subject: [PATCH] 0910D --- UI/AreaTabWidget.py | 156 +++++++++++++++++++++++++++----------------- UI/MainWindow.py | 8 ++- 2 files changed, 101 insertions(+), 63 deletions(-) diff --git a/UI/AreaTabWidget.py b/UI/AreaTabWidget.py index b5cd603..12c3b71 100644 --- a/UI/AreaTabWidget.py +++ b/UI/AreaTabWidget.py @@ -27,7 +27,7 @@ class AreaTabWidget(QMainWindow): widgetList[1].setCurrentIndex(order) widgetList[2].setText(channelBytes) - self.addAreaWidget(widgetList) + self.addAreaWidget(widgetList, loacl = False) def addAreaTab(self): @@ -89,17 +89,18 @@ class AreaTabWidget(QMainWindow): if index != -1: self.areaTabWidget.removeTab(index) - + del self.widgetList[index] Device.delAreas(deviceName, index) - def addAreaWidget(self, widgetList): + def addAreaWidget(self, widgetList, loacl = True): dataType = widgetList[0].currentText() order = self.dataTypeTranslate(widgetList[1].currentText()) byteLineEdit = widgetList[2].text() areaLayout = widgetList[3] deviceName = self.areaTabWidget.parent().parent().parent().parent().parent().windowTitle() + widgetList = [] while areaLayout.count(): item = areaLayout.takeAt(0) @@ -112,72 +113,88 @@ class AreaTabWidget(QMainWindow): QMessageBox.warning(self, '警告', '请输入字节长度。') else: - # for i in range(3): - # widgetList[i].setEnabled(False) if dataType in ['AI', 'AO']: - areaLabel = QLabel(dataType + str(1) + ": " + byteLineEdit + 'Byte' ) areaLabel2 =QLabel('0') - areaLineEdit = QLineEdit('0') - editbtn = QPushButton('强制') - - areaLayout.addWidget(areaLabel, 0, 0) - areaLayout.addWidget(areaLabel2, 0, 1 ) - areaLayout.addWidget(areaLineEdit, 0, 2 ) - areaLayout.addWidget(editbtn, 0, 3) - areaLayout.addItem(self.horizontalSpacer, 0, 4) - editbtn.clicked.connect(lambda checked, btn=editbtn: self.wirteValue(btn)) - self.widgetList.append([areaLabel2, areaLineEdit, editbtn, areaLayout]) - # else: - # areaLabel = QLabel(dataType + str(i + 1) + ": " + byteLineEdit + 'Byte') - # areaLabel2 = QLabel('0') - # areaLineEdit = QLineEdit('0') - # editbtn = QPushButton('强制') - # - # areaLayout.addWidget(areaLabel, i // 2, i % 2 + 4) - # areaLayout.addWidget(areaLabel2, i // 2, i % 2 + 6) - # areaLayout.addWidget(areaLineEdit, i // 2, i % 2 + 6) - # areaLayout.addWidget(editbtn, i // 2, i % 2 + 7) - # editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn)) - # self.widgetList.append([areaLabel2, areaLineEdit, editbtn]) + + if '主站' in deviceName and dataType == 'AI' or ('从站' in deviceName and dataType == 'AO'): + areaLayout.addWidget(areaLabel, 0, 0) + areaLayout.addWidget(areaLabel2, 0, 1) + areaLayout.addItem(self.horizontalSpacer, 0, 4) + self.widgetList.append([areaLabel2, areaLayout]) + elif '主站' in deviceName and dataType == 'AO' or ('从站' in deviceName and dataType == 'AI'): + areaLineEdit = QLineEdit('0') + editbtn = QPushButton('强制') + areaLayout.addWidget(areaLabel, 0, 0) + areaLayout.addWidget(areaLabel2, 0, 1 ) + areaLayout.addWidget(areaLineEdit, 0, 2 ) + areaLayout.addWidget(editbtn, 0, 3) + areaLayout.addItem(self.horizontalSpacer, 0, 4) + editbtn.clicked.connect(lambda checked, btn=editbtn: self.wirteValue(btn)) + self.widgetList.append([areaLabel2, areaLineEdit, editbtn, areaLayout]) + else: channelNumber = int(byteLineEdit) * 8 - for i in range(int(channelNumber)): - if i % 2 == 0: - areaLabel = QLabel(dataType + str(i + 1 ) + ": " + byteLineEdit + 'Byte' ) - areaLabel2 =QLabel('0') - areaLineEdit = QLineEdit('0') - editbtn = QPushButton('强制') - - areaLayout.addWidget(areaLabel, i//2, i % 2) - areaLayout.addWidget(areaLabel2, i//2, i % 2 + 1 ) - areaLayout.addWidget(areaLineEdit, i//2, i % 2 + 2 ) - areaLayout.addWidget(editbtn, i // 2, i % 2 + 3) - editbtn.clicked.connect(lambda checked, btn=editbtn: self.wirteValue(btn)) - self.widgetList.append([areaLabel2, areaLineEdit, editbtn]) - else: - areaLabel = QLabel(dataType + str(i + 1) + ": " + byteLineEdit + 'Byte') - areaLabel2 = QLabel('0') - areaLineEdit = QLineEdit('0') - editbtn = QPushButton('强制') - - areaLayout.addWidget(areaLabel, i // 2, i % 2 + 4) - areaLayout.addWidget(areaLabel2, i // 2, i % 2 + 5) - areaLayout.addWidget(areaLineEdit, i // 2, i % 2 + 6) - areaLayout.addWidget(editbtn, i // 2, i % 2 + 7) - editbtn.clicked.connect(lambda checked, btn=editbtn: self.wirteValue(btn)) - - self.widgetList.append([areaLabel2, areaLineEdit, editbtn]) + if '主站' in deviceName and dataType == 'DI' or ( + '从站' in deviceName and dataType == 'DO'): + for i in range(int(channelNumber)): + if i % 2 == 0: + areaLabel = QLabel(dataType + str(i + 1) + ": " + byteLineEdit + 'Byte') + areaLabel2 = QLabel('0') + areaLayout.addWidget(areaLabel, i // 2, i % 2) + areaLayout.addWidget(areaLabel2, i // 2, i % 2 + 1) + widgetList.append([areaLabel2, areaLayout]) + + else: + areaLabel = QLabel(dataType + str(i + 1) + ": " + byteLineEdit + 'Byte') + areaLabel2 = QLabel('0') + areaLayout.addWidget(areaLabel, i // 2, i % 2 + 2) + areaLayout.addWidget(areaLabel2, i // 2, i % 2 + 3) + widgetList.append([areaLabel2, areaLayout]) + self.widgetList.append(widgetList) + if '主站' in deviceName and dataType == 'DO' or ( + '从站' in deviceName and dataType == 'DI'): + for i in range(int(channelNumber)): + if i % 2 == 0: + areaLabel = QLabel(dataType + str(i + 1) + ": " + byteLineEdit + 'Byte') + areaLabel2 = QLabel('0') + areaLineEdit = QLineEdit('0') + editbtn = QPushButton('强制') + + areaLayout.addWidget(areaLabel, i // 2, i % 2) + areaLayout.addWidget(areaLabel2, i // 2, i % 2 + 1) + areaLayout.addWidget(areaLineEdit, i // 2, i % 2 + 2) + areaLayout.addWidget(editbtn, i // 2, i % 2 + 3) + editbtn.clicked.connect(lambda checked, btn=editbtn: self.wirteValue(btn)) + widgetList.append([areaLabel2, areaLineEdit, editbtn]) + else: + areaLabel = QLabel(dataType + str(i + 1) + ": " + byteLineEdit + 'Byte') + areaLabel2 = QLabel('0') + areaLineEdit = QLineEdit('0') + editbtn = QPushButton('强制') + + areaLayout.addWidget(areaLabel, i // 2, i % 2 + 4) + areaLayout.addWidget(areaLabel2, i // 2, i % 2 + 5) + areaLayout.addWidget(areaLineEdit, i // 2, i % 2 + 6) + areaLayout.addWidget(editbtn, i // 2, i % 2 + 7) + editbtn.clicked.connect(lambda checked, btn=editbtn: self.wirteValue(btn)) + + widgetList.append([areaLabel2, areaLineEdit, editbtn]) + self.widgetList.append(widgetList) areaLayout.addItem(self.verticalSpacer, int(byteLineEdit) * 8 ,0) - index = self.areaTabWidget.currentIndex() + 1 - areaId = DevicesManange.getAreaID(deviceName) + index = self.areaTabWidget.currentIndex() + 1 + areaId = DevicesManange.getAreaID(deviceName) + if areaId is not None and index in areaId: + if loacl: + print(index) + del self.widgetList[index - 1] + DevicesManange.updataAreas(dataType, order, byteLineEdit, deviceName, index) + else: + DevicesManange.addAreas(dataType, order, byteLineEdit, deviceName) + - if index in areaId: - DevicesManange.updataAreas(dataType, order, byteLineEdit, deviceName, index) - else: - DevicesManange.addAreas(dataType, order, byteLineEdit, deviceName) @@ -188,9 +205,12 @@ class AreaTabWidget(QMainWindow): def wirteValue(self, editBtn): deviceName = self.areaTabWidget.parent().parent().parent().parent().parent().windowTitle() index = self.areaTabWidget.currentIndex() + tabwidget = self.areaTabWidget.currentWidget() + for widget in self.widgetList: if editBtn in widget: value = widget[1].text() + print(deviceName, index, value) @@ -198,6 +218,7 @@ class AreaTabWidget(QMainWindow): deviceList = [] areaIdList = [] devices = DevicesManange.getAllDevice() + for device in devices: deviceName = device[0] areas = device[3] @@ -207,7 +228,20 @@ class AreaTabWidget(QMainWindow): areaId = area["id"] areaIdList.append(areaId) deviceList.append([deviceName, areaIdList]) - print(deviceList) + index = self.areaTabWidget.currentIndex() + print(self.widgetList,'fff') + if len(self.widgetList) > 0: + if isinstance(self.widgetList[index][0], list): + widgetLists = self.widgetList[index] + for widgetList in widgetLists: + widgetList[0].setText('bbb') + else: + widgetLists = self.widgetList[index] + print(widgetLists) + widgetLists[0].setText('aaa') + + + if __name__ == '__main__': app = QApplication(sys.argv) diff --git a/UI/MainWindow.py b/UI/MainWindow.py index eabe6a0..3f23d30 100644 --- a/UI/MainWindow.py +++ b/UI/MainWindow.py @@ -129,8 +129,12 @@ class MainWindow(QMainWindow): def startProtocol(self): - AreaTabWidget().readValue() - + for subWindow in self.subWindows: + areaTabWidget = subWindow.widget().widget().centralWidget() + tabwidget = subWindow.widget().widget().centralWidget().areaTabWidget + areaTabWidget.readValue() + # layout = areaTabWidget.widgetList[0][-1] + # print(layout) def tran(self, dataType, order): if dataType == 'AI': dataType = 0