Python 使用setflags()向QListWidgetItem添加几个复选框

Python 使用setflags()向QListWidgetItem添加几个复选框,python,qt,checkbox,pyqt,pyqt4,Python,Qt,Checkbox,Pyqt,Pyqt4,我正在使用Python3.3和PyQt4。我想向qtlistwidget中的项目添加几个复选框。我可以使用以下代码添加一个: item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) item.setCheckState(QtCore.Qt.Unchecked) 但我无法为这个项目添加更多内容,我尝试了以下方法: item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable |

我正在使用Python3.3和PyQt4。我想向qtlistwidget中的项目添加几个复选框。我可以使用以下代码添加一个:

item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
item.setCheckState(QtCore.Qt.Unchecked)
但我无法为这个项目添加更多内容,我尝试了以下方法:

item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsUserCheckable)


但两者都不起作用。是否有人知道是否可以添加更多复选框,或者我如何解决这个问题。非常感谢

QListWidgetItem
不是以这种方式使用的。无论您设置了多少次
QtCore.Qt.ItemIsUserCheckable
标志,每个项目都将显示一个复选框。如果需要在同一行中显示多个复选框,
QTableWidget
可能就是您想要的:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

#---------
# IMPORT
#---------
from PyQt4 import QtGui, QtCore

#---------
# MAIN
#---------
class MyWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        numberRows    = 1
        numberColumns = 2

        self.tableWidget = QtGui.QTableWidget(self)
        self.tableWidget.setRowCount(numberRows)
        self.tableWidget.setColumnCount(numberColumns)

        for rowNumber in range(numberRows):
            for columnNumber in range(numberColumns):    
                item = QtGui.QTableWidgetItem("item {0} {1}".format(rowNumber, columnNumber))
                item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
                item.setCheckState(QtCore.Qt.Unchecked)

                self.tableWidget.setItem(rowNumber, columnNumber, item)

        self.layoutVertical = QtGui.QVBoxLayout(self)
        self.layoutVertical.addWidget(self.tableWidget)

if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.resize(333, 111)
    main.show()

    sys.exit(app.exec_())

QListWidgetItem
不是以这种方式使用的。无论您设置了多少次
QtCore.Qt.ItemIsUserCheckable
标志,每个项目都将显示一个复选框。如果需要在同一行中显示多个复选框,
QTableWidget
可能就是您想要的:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

#---------
# IMPORT
#---------
from PyQt4 import QtGui, QtCore

#---------
# MAIN
#---------
class MyWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        numberRows    = 1
        numberColumns = 2

        self.tableWidget = QtGui.QTableWidget(self)
        self.tableWidget.setRowCount(numberRows)
        self.tableWidget.setColumnCount(numberColumns)

        for rowNumber in range(numberRows):
            for columnNumber in range(numberColumns):    
                item = QtGui.QTableWidgetItem("item {0} {1}".format(rowNumber, columnNumber))
                item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
                item.setCheckState(QtCore.Qt.Unchecked)

                self.tableWidget.setItem(rowNumber, columnNumber, item)

        self.layoutVertical = QtGui.QVBoxLayout(self)
        self.layoutVertical.addWidget(self.tableWidget)

if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.resize(333, 111)
    main.show()

    sys.exit(app.exec_())