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

时间:2015-01-26 18:48:00

标签: python pyqt4 qtableview

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

在setData中

    self.arraydata [index.row()] [index.column()] = value 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] = valuesetdata例程中的问题所在。我尝试将value转换为strQString。我也尝试过使用.toString().toPyObject()。但似乎都没有效果。我不知道还有什么可以解决这个问题。任何帮助将不胜感激!

0 个答案:

没有答案