示例#1
0
    def addTable(self, value):
        row = len(value)
        col = len(value[0])
        self.comboBoxList = list()

        table = QTableWidget()
        table.setRowCount(row)
        table.setColumnCount(col)
        table.setHorizontalHeaderLabels(value[0])
        table.horizontalHeader().setEnabled(False)
        table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        table.horizontalHeader().setDefaultAlignment(Qt.AlignCenter)
        table.verticalHeader().hide()
        for i, row in enumerate(value[1:]):
            for j, cell in enumerate(row):
                if isinstance(cell, dict):
                    if not cell.get('select', False):
                        newItem = QTableWidgetItem(cell.get('value', ''))
                        newItem.setTextAlignment(Qt.AlignHCenter)
                        newItem.setTextAlignment(Qt.AlignCenter)
                        table.setItem(i, j, newItem)
                    elif not cell.get('corresponding', False):
                        newItem = QComboBox()
                        newItem.setAcceptDrops(True)
                        newItem.setStyleSheet(
                            'margin:0;padding:0;border:0.5pxbackground-color:white;text-align:center;vertical-align:middle;'
                        )
                        newItem.setSizeAdjustPolicy(QComboBox.AdjustToContents)
                        newItem.addItem(cell.get('value', ''))
                        for sender in self.senderwindow.senderList[1:]:
                            newItem.addItem(str(sender[0]))
                        table.setCellWidget(i, j, newItem)
                        table.cellWidget(i, j).currentTextChanged.connect(
                            self.tableComboBoxChange)
                        self.comboBoxList.append(newItem)
                    else:
                        newItem = QLineEdit()
                        newItem.setStyleSheet(
                            'margin:0;padding:0;border:0.5px;text-align:center;background-color:white;vertical-align:middle;'
                        )
                        newItem.setText(cell.get('value', ''))
                        table.setCellWidget(i, j, newItem)
                elif isinstance(cell, str):
                    newItem = QTableWidgetItem(cell)
                    newItem.setTextAlignment(Qt.AlignHCenter)
                    newItem.setTextAlignment(Qt.AlignCenter)
                    table.setItem(i, j, newItem)
                QApplication.processEvents()
        table.setEnabled(False)
        self.tableWidget = table
        self.gridLayout.addWidget(self.tableWidget)