Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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 在使用pyqt4的setData QTableView例程中,如何将从QTableView单元格检索到的值存储到my arraydata?_Python_Pyqt4_Qtableview - Fatal编程技术网

Python 在使用pyqt4的setData QTableView例程中,如何将从QTableView单元格检索到的值存储到my arraydata?

Python 在使用pyqt4的setData QTableView例程中,如何将从QTableView单元格检索到的值存储到my arraydata?,python,pyqt4,qtableview,Python,Pyqt4,Qtableview,我创建了一个可由用户编辑的QTableView。在双击QTableView单元格并在GUI中编辑它之后,我试图从该单元格中检索数据。但是,当我双击单元格、进行编辑并按enter键时,会出现以下错误: 在setData中 self.arraydata[index.row][index.column]=值 TypeError:“str”对象不支持项分配 这是我的密码: class MyTableModel(QtCore.QAbstractTableModel): def __init__(

我创建了一个可由用户编辑的QTableView。在双击QTableView单元格并在GUI中编辑它之后,我试图从该单元格中检索数据。但是,当我双击单元格、进行编辑并按enter键时,会出现以下错误:

在setData中 self.arraydata[index.row][index.column]=值 TypeError:“str”对象不支持项分配

这是我的密码:

class MyTableModel(QtCore.QAbstractTableModel): 
    def __init__(self, datain, headerdata, parent=None, *args): 
        QtCore.QAbstractTableModel.__init__(self, parent, *args) 
        self.arraydata = datain

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

    def columnCount(self, parent): 
        return len(self.arraydata[0]) 

    def data(self, index, role):
        row = index.row()
        column = index.column()

        if role == QtCore.Qt.EditRole:
            return QtCore.QVariant(self.arraydata[row][column])
        if role == QtCore.Qt.DisplayRole:
            value = self.arraydata[row][column] 
            return QtCore.QVariant(value)

    def setData(self, index, value, role=QtCore.Qt.EditRole):
        if index.isValid():
            if role == QtCore.Qt.EditRole:
                row = index.row()
                column = index.column()
                self.arraydata[row][column] = value
                return True
        return False

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

self.arraydata[row][column]=值是setdata例程中的问题所在。我尝试将值转换为str或QString。我还尝试使用.toString和.toPyObject。但似乎都不管用。我不知道还能做些什么来解决这个问题。任何帮助都将不胜感激

那么,arraydata的结构是什么?错误表明它是字符串列表,而不是列表列表。尝试将printreprself.arraydata放在有问题的行之前,并检查是否实际存在…您是对的,我发送的是字符串列表,而不是列表列表。发送列表解决了我的问题。非常感谢你指出这一点!