def updateTables(self): self.ui.table.setRowCount(len( self.repos)) # redraw table to update for any changes for i, r in enumerate(self.repos): self.ui.table.setItem(i, 1, QTableWidgetItem(r[0])) colourcell = QTableWidgetItem(f"0x{str(hex(r[1]))[2:].zfill(6)}") colourcell.setBackground(QColor(r[1])) colourcell.setFlags(colourcell.flags() & ~Qt.ItemIsEditable) self.ui.table.setItem(i, 0, colourcell) # total objects in nested dict, length of all values + number of columns self.ui.initable.setRowCount( sum(len(v) for v in self.inicontents.values()) + len(self.inicontents)) secfont = QFont() secfont.setFamily(u"Sans Serif") secfont.setBold(True) pos = 0 for sec in self.inicontents: item = QTableWidgetItem(sec) item.setFont(secfont) item.setFlags(item.flags() & ~Qt.ItemIsEditable) self.ui.initable.setItem(pos, 0, item) item = QTableWidgetItem() # empty tile next to section header item.setFlags( item.flags() & ~Qt.ItemIsEditable) # done to prevent editing the blank space self.ui.initable.setItem(pos, 1, item) pos += 1 for k, v in zip(self.inicontents[sec].keys(), self.inicontents[sec].values()): self.ui.initable.setItem(pos, 0, QTableWidgetItem(k)) self.ui.initable.setItem(pos, 1, QTableWidgetItem(v)) pos += 1
def initUI(self): self.setWindowTitle("QTableWidget 例子") self.resize(430, 230) conLayout = QHBoxLayout() tableWidget = QTableWidget() tableWidget.setRowCount(4) tableWidget.setColumnCount(3) conLayout.addWidget(tableWidget) tableWidget.setHorizontalHeaderLabels(['姓名', '性别', '体重(kg)']) newItem = QTableWidgetItem("张三") newItem.setFont(QFont("Times", 12, QFont.Black)) tableWidget.setItem(0, 0, newItem) newItem = QTableWidgetItem("男") newItem.setFont(QFont("Times", 12, QFont.Black)) tableWidget.setItem(0, 1, newItem) newItem = QTableWidgetItem("160") newItem.setFont(QFont("Times", 12, QFont.Black)) tableWidget.setItem(0, 2, newItem) self.setLayout(conLayout)