def setTable(self, data, setNotes=False): # - Init name_column = ['Class Name', 'Class Type', 'Class Members', 'Note'] self.blockSignals(True) self.setColumnCount(len(name_column)) self.setRowCount(len(data.keys())) self.setSortingEnabled( False ) # Great solution from: https://stackoverflow.com/questions/7960505/strange-qtablewidget-behavior-not-all-cells-populated-after-sorting-followed-b # - Populate for row, key in enumerate(sorted(data.keys())): item_groupName = QtGui.QTableWidgetItem(str(key)) item_groupPos = QtGui.QTableWidgetItem(str(data[key][1])) item_groupMem = QtGui.QTableWidgetItem(' '.join(data[key][0])) self.setItem(row, 0, item_groupName) self.setItem(row, 1, item_groupPos) self.setItem(row, 2, item_groupMem) if setNotes: try: item_groupNote = QtGui.QTableWidgetItem(data[key][2]) self.setItem(row, 3, item_groupNote) except IndexError: pass self.setHorizontalHeaderLabels(name_column) self.blockSignals(False) self.setSortingEnabled(True)
def class_add_new(self): if self.tab_groupKern.rowCount > 0: self.tab_groupKern.insertRow(0) item_groupName = QtGui.QTableWidgetItem( 'Class_%s' % self.tab_groupKern.rowCount) item_groupPos = QtGui.QTableWidgetItem('KernLeft') item_groupMem = QtGui.QTableWidgetItem('') self.tab_groupKern.setItem(0, 0, item_groupName) self.tab_groupKern.setItem(0, 1, item_groupPos) self.tab_groupKern.setItem(0, 2, item_groupMem) else: layer = self.cmb_layer.currentText empty_table = {layer: {'Class_1': [[''], 'KernLeft']}} self.update_data(empty_table)
def setTable(self, data, reset=False): name_row, name_column = [], [] self.blockSignals(True) # - Populate for n, layer in enumerate(sorted(data.keys())): name_row.append(layer) for m, key in enumerate(sorted(data[layer].keys())): name_column.append(key) newitem = QtGui.QTableWidgetItem(str(data[layer][key])) if self.item(n, m) == None or reset: markColor = QtGui.QColor("white") else: if self.item(n, m).text() == newitem.text(): markColor = QtGui.QColor("white") else: markColor = QtGui.QColor("aliceblue") self.setItem(n, m, newitem) self.item(n, m).setBackground(markColor) self.setHorizontalHeaderLabels(name_column) self.setVerticalHeaderLabels(name_row) self.blockSignals(False)
def setTable(self, data, reset=False): name_row, name_column = [], [] self.blockSignals(True) # - Populate for n, layer in enumerate(sorted(data.keys())): name_row.append(layer) for m, key in enumerate(sorted(data[layer].keys())): name_column.append(key) newitem = QtGui.QTableWidgetItem(str(data[layer][key])) self.setItem(n, m, newitem) self.setHorizontalHeaderLabels(name_column) self.setVerticalHeaderLabels(name_row) self.blockSignals(False)
def setTable(self, data, reset=False): name_row, name_column = [], [] self.blockSignals(True) self.setColumnCount(max(map(len, data.values()))) self.setRowCount(len(data.keys())) # - Populate for n, layer in enumerate(sorted(data.keys())): name_row.append(layer) for m, key in enumerate(data[layer].keys()): # -- Build name column name_column.append(key) # -- Selectively add data if m == 0: newitem = QtGui.QTableWidgetItem(str(data[layer][key])) newitem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) newitem.setCheckState(QtCore.Qt.Unchecked) self.setItem(n, m, newitem) if 0 < m < 3: combo = QtGui.QComboBox() if m % 2: combo.setStyleSheet( 'QComboBox { background-color: rgba(255, 0, 0, 15); }' ) else: combo.setStyleSheet( 'QComboBox { background-color: rgba(0, 255, 0, 15); }' ) combo.addItems(data[layer][key]) self.setCellWidget(n, m, combo) if 2 < m < len(data[layer].keys()): spin = QtGui.QDoubleSpinBox() if m <= 6: spin.setSuffix(' u') if m % 2: spin.setStyleSheet( 'QDoubleSpinBox { background-color: rgba(255, 0, 0, 15); }' ) else: spin.setStyleSheet( 'QDoubleSpinBox { background-color: rgba(0, 255, 0, 15); }' ) spin.setMinimum(0.) spin.setMaximum(1000.) if 7 <= m <= 8: spin.setSuffix(' u') if m % 2: spin.setStyleSheet( 'QDoubleSpinBox { background-color: rgba(255, 200, 0, 25); }' ) else: spin.setStyleSheet( 'QDoubleSpinBox { background-color: rgba(255, 200, 0, 25); }' ) spin.setMinimum(0.) spin.setMaximum(1000.) if 9 <= m <= 10: spin.setSuffix(' %') spin.setStyleSheet( 'QDoubleSpinBox { background-color: rgba(0, 0, 255, 15); }' ) spin.setMinimum(0.) spin.setMaximum(500.) if 10 < m: spin.setMinimum(0) spin.setMaximum(1) spin.setSingleStep(0.01) spin.setValue(data[layer][key]) self.setCellWidget(n, m, spin) self.setHorizontalHeaderLabels(name_column) self.setVerticalHeaderLabels(name_row) self.blockSignals(False)