Python 在使用pyqt4的setData QTableView例程中,如何将从QTableView单元格检索到的值存储到my arraydata?
我创建了一个可由用户编辑的QTableView。在双击QTableView单元格并在GUI中编辑它之后,我试图从该单元格中检索数据。但是,当我双击单元格、进行编辑并按enter键时,会出现以下错误: 在setData中 self.arraydata[index.row][index.column]=值 TypeError:“str”对象不支持项分配 这是我的密码: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__(
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放在有问题的行之前,并检查是否实际存在…您是对的,我发送的是字符串列表,而不是列表列表。发送列表解决了我的问题。非常感谢你指出这一点!