PyQt: checkbox en QTableWidget

Uso el siguiente código para colocar una checkbox en la novena columna de mi QTableWidget

 chkBoxItem = QtGui.QTableWidgetItem() chkBoxItem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled) chkBoxItem.setCheckState(QtCore.Qt.Unchecked) table.setItem(rowNo,9,chkBoxItem) 

Donde la table es mi QtTableWidget . Necesito agregar la fila donde se hace clic en la checkbox a una lista … ¿cómo puedo lograrlo?

Saludos cordiales,

Una forma de hacerlo sería:

  1. conectar la señal itemClicked de la tabla a un controlador

  2. probar el estado checkedState del elemento seleccionado en el controlador

  3. Si el elemento está marcado, agregue su row a la lista.

Código de ejemplo:

 from PyQt4 import QtGui, QtCore class Window(QtGui.QWidget): def __init__(self, rows, columns): QtGui.QWidget.__init__(self) self.table = QtGui.QTableWidget(rows, columns, self) for column in range(columns): for row in range(rows): item = QtGui.QTableWidgetItem('Text%d' % row) if row % 2: item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled) item.setCheckState(QtCore.Qt.Unchecked) self.table.setItem(row, column, item) self.table.itemClicked.connect(self.handleItemClicked) layout = QtGui.QVBoxLayout(self) layout.addWidget(self.table) self._list = [] def handleItemClicked(self, item): if item.checkState() == QtCore.Qt.Checked: print('"%s" Checked' % item.text()) self._list.append(item.row()) print(self._list) else: print('"%s" Clicked' % item.text()) if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) window = Window(6, 3) window.resize(350, 300) window.show() sys.exit(app.exec_())