Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 在PYQT的自定义模型中具有复选框的Listview_Python_Python 2.7_Pyqt_Pyqt4_Model View - Fatal编程技术网

Python 在PYQT的自定义模型中具有复选框的Listview

Python 在PYQT的自定义模型中具有复选框的Listview,python,python-2.7,pyqt,pyqt4,model-view,Python,Python 2.7,Pyqt,Pyqt4,Model View,我正在为listview编写我的自定义列表模型类。在List_Model类的data方法中,我选中了Checkstaterole,以查看我希望在listview中显示的复选框。但是,我无法在自定义模型类中单独选中和取消选中复选框 如何分别选中和取消选中复选框?在QT UI中检查所有复选框的ID。简单地说,您需要单独识别这些复选框,并且应该能够处理这些复选框的启用/禁用。@Barun Sharma。。。我在问我如何能单独跟踪。。。你能不能在这个案例中分享一下我的模型…我该怎么做。。?在listvi

我正在为listview编写我的自定义列表模型类。在List_Model类的data方法中,我选中了Checkstaterole,以查看我希望在listview中显示的复选框。但是,我无法在自定义模型类中单独选中和取消选中复选框


如何分别选中和取消选中复选框?

在QT UI中检查所有复选框的ID。简单地说,您需要单独识别这些复选框,并且应该能够处理这些复选框的启用/禁用。@Barun Sharma。。。我在问我如何能单独跟踪。。。你能不能在这个案例中分享一下我的模型…我该怎么做。。?在listview中,我们必须有模型……在模型中,我如何跟踪?您的问题非常不清楚。你说的“轨道”是什么意思?请给出一个您无法解决的问题的实际代码示例。@ekhumoro我已经为我的应用程序添加了完整的代码,并试图使我的问题更清楚。如果我需要分享更多细节,请告诉我。@Juna。我还是不知道问题出在哪里。若你们想保存状态,你们需要把它存储在某个地方——就像你们已经在处理颜色一样。通常,一个item类用于此目的,因此许多信息可以组合在一起-但我想您可以使用
dict
。是否确实需要编写自定义模型?为什么你就不能用一个?
class List_Model(QtCore.QAbstractListModel):
    def __init__(self, colors=[], parent=None):
        QtCore.QAbstractListModel.__init__(self, parent)
        self.__colors = colors

    def rowCount(self, parent):
        return len(self.__colors)

    def data(self, index, role):
        if role == QtCore.Qt.DisplayRole:
            row = index.row()
            value = self.__colors[row]
            return value.name()

        if role == QtCore.Qt.DecorationRole:
            row = index.row()
            value = self.__colors[row]
            pixmap = QtGui.QPixmap(26,26)
            pixmap.fill(value)
            icon = QtGui.QIcon(pixmap)
            return icon

        if role == QtCore.Qt.CheckStateRole:
            return QtCore.Qt.Checked

    def flags(self, index):
        return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsUserCheckable

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)

    listview = QtGui.QListView()
    listview.show()

    red = QtGui.QColor(255,0,0)
    green = QtGui.QColor(0,255,0)
    blue = QtGui.QColor(0,0,255)

    model = List_Model([red, green, blue])
    listview.setModel(model)
    sys.exit(app.exec_())