Python 如何处理PySide表中的复选框?
我有一个带有四列的Python 如何处理PySide表中的复选框?,python,pyside,Python,Pyside,我有一个带有四列的QtGui.QTableWidget,最后一列应该显示一个复选框。该表的创建方式如下: self.table = QtGui.QTableWidget(0, 4, self) self.table.setHorizontalHeaderLabels(["ID", "Name", "Description", "Status"]) self.table.setAlternatingRowColors(True) self.table.cellChanged.connect(sel
QtGui.QTableWidget
,最后一列应该显示一个复选框。该表的创建方式如下:
self.table = QtGui.QTableWidget(0, 4, self)
self.table.setHorizontalHeaderLabels(["ID", "Name", "Description", "Status"])
self.table.setAlternatingRowColors(True)
self.table.cellChanged.connect(self._cellChanged)
cb = QtGui.QTableWidgetItem("deactive")
cb.setCheckState(QtCore.Qt.CheckState.Unchecked)
self.table.setItem(idx, 3, cb)
每个表行的最后一列是这样创建的:
self.table = QtGui.QTableWidget(0, 4, self)
self.table.setHorizontalHeaderLabels(["ID", "Name", "Description", "Status"])
self.table.setAlternatingRowColors(True)
self.table.cellChanged.connect(self._cellChanged)
cb = QtGui.QTableWidgetItem("deactive")
cb.setCheckState(QtCore.Qt.CheckState.Unchecked)
self.table.setItem(idx, 3, cb)
现在,当用户单击表行中的复选框时,我想相应地更改复选框的文本。因此,我连接到cellChanged
信号,如上所示。为此,我做了以下几点:
def _cellChanged(self, row, column):
if column == 3:
print self.table.itemAt(row, column).checkState()
text = "active" if self.table.itemAt(row, column).checkState() == QtCore.Qt.CheckState.Checked else "deactive"
self.table.itemAt(row, column).setText(text)
然而,这是行不通的。无论用户选中还是取消选中复选框,checkState()
方法始终返回Unchecked
你知道我在这里遗漏了什么或误解了什么吗?就为了记录,我找到了解决办法。我需要使用
self.table.item()
而不是self.table.itemAt()
仅针对记录,我找到了解决方案。我需要使用self.table.item()
而不是self.table.itemAt()