Esempio n. 1
0
 def setData(self, data, itemHandler):
     logger.debug('Set Data')
     if not data:
         self.setMaximumHeight(40)
         return
     if not isinstance(data, list):
         data.setView(self)
         self.data = data.value
     else:
         self.data = data
     row_number = len(self.data)
     self.setRowCount(row_number)
     for cur_row in range(row_number):
         items = itemHandler(self.data[cur_row])
         i = 0
         for item in items:
             if isinstance(item, str):
                 widget = QTableWidgetItem(item)
                 self.setItem(cur_row, i, widget)
             else:
                 layout = QHBoxLayout()
                 layout.addWidget(item)
                 layout.setContentsMargins(0, 0, 0, 0)
                 widget = QWidget()
                 widget.setLayout(layout)
                 widget.setStyleSheet(
                     "background: {}".format("#f3f3f3" if cur_row %
                                             2 else "#ffffff"))
                 self.setCellWidget(cur_row, i, widget)
             i += 1
     if row_number > 0:
         self.setMinimumHeight(180)
     else:
         self.setMaximumHeight(32)
     self.row_number = row_number
Esempio n. 2
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)