我创建了一个可由用户编辑的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] = value
是setdata
例程中的问题所在。我尝试将value
转换为str
或QString
。我也尝试过使用.toString()
和.toPyObject()
。但似乎都没有效果。我不知道还有什么可以解决这个问题。任何帮助将不胜感激!