Skip to main content
 首页 » 编程设计

python之python中的表格小部件问题

2025年05月04日9xing901022

我基本上是在尝试搜索数组并使用搜索结果填充表格小部件。其他一切似乎都在工作,但是当我执行我的代码并填写所有信息时,我不断收到一条错误消息,上面写着 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']))