如何检查qtablewidget中是否选中了复选框?

2024-09-30 06:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python3.7中设置了一个过滤工具,使用的是pyqt5。我已经创建了一个qtablewidget来存储用户选择的过滤器及其补充。我希望允许用户在一个数据上组合过滤器,所以我在每一行中添加了分组复选框来选择想要的过滤器。 我应该使用哪些命令来循环我的qtable to get wich复选框被选中?在

enter image description here

def bindApply(self):
    checked_list = []
    for i in range(self.tableWidget.rowCount()):
        #print(self.tableWidget.rowCount())
        if self.tableWidget.item(i, 1).checkState() == QtCore.Qt.Checked:
            checked_list.append([i,1])
        elif self.tableWidget.item(i, 2).checkState() == QtCore.Qt.Checked:
            checked_list.append([i,2])
        else:
            pass
    return(checked_list)

我期望一个包含所选行和列的索引的列表,但是我的函数什么也不返回。在

下面是一个可复制的例子:

^{pr2}$

Tags: 工具self过滤器itemqtpyqt5list复选框
1条回答
网友
1楼 · 发布于 2024-09-30 06:27:53

您应该检查分配给单元格的复选框的状态,而不是与单元格关联的项的状态,即

def bindApply(self):
    checked_list = []
    for i in range(self.tableWidget.rowCount()):
        #print(self.tableWidget.rowCount())
        if self.tableWidget.cellWidget(i, 1).isChecked():
            checked_list.append([i,1])
        elif self.tableWidget.cellWidget(i, 2).isChecked():
            checked_list.append([i,2])
        else:
            pass
    print(checked_list)

相关问题 更多 >

    热门问题