我基本上是在尝试搜索数组并使用搜索结果填充表格小部件。其他一切似乎都在工作,但是当我执行我的代码并填写所有信息时,我不断收到一条错误消息,上面写着 TypeError: list indices must be integers, not str.这是我遇到问题的代码
if(studentRecord['Student Name'] == self.ui.SearchlineEdit.text()):
studentsArray = self.loadstudentArrayOfRecords()
self.ui.DetailstableWidget.insertRow(0)
self.ui.DetailstableWidget.setItem(0,0,QtGui.QTableWidgetItem(studentsArray[self.ui.SearchlineEdit.text()]['Student Name']))
self.ui.DetailstableWidget.setItem(0,1,QtGui.QTableWidgetItem(studentsArray[self.ui.SearchlineEdit.text()]['Student Code']))
self.ui.DetailstableWidget.setItem(0,2,QtGui.QTableWidgetItem(studentsArray[self.ui.SearchlineEdit.text()]['Instrument Name']))
self.ui.DetailstableWidget.setItem(0,3,QtGui.QTableWidgetItem(studentsArray[self.ui.SearchlineEdit.text()]['Instrument Code']))
请您参考如下方法:
看起来像
self.loadstudentArrayOfRecords() 应该返回字典字典,但返回列表字典。
检查函数 self.loadstudentArrayOfRecords()。
如果您使代码更具可读性,您会更快地找到错误:
searchText = self.ui.SearchlineEdit.text()
if studentRecord['Student Name'] == searchText:
studentsArray = self.loadstudentArrayOfRecords()
student = studentsArray[searchText]
tableWidget = self.ui.DetailstableWidget
tableWidget.insertRow(0)
tableWidget.setItem(0, 0, QtGui.QTableWidgetItem(student['Student Name']))
tableWidget.setItem(0, 1, QtGui.QTableWidgetItem(student['Student Code']))
tableWidget.setItem(0, 2, QtGui.QTableWidgetItem(student['Instrument Name']))
tableWidget.setItem(0, 3, QtGui.QTableWidgetItem(student['Instrument Code']))
