Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何处理PySide表中的复选框?_Python_Pyside - Fatal编程技术网

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()