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)