问题描述:
在处理表格中的多选或全选数据时,如果按照从前往后的顺序删除行,会导致索引错误的问题。例如,如果删除第一行,那么后面行的索引都会发生变化。
解决方法:
为了解决这个问题,一种有效的方法是使用倒序遍历,即从后往前删除行。这样可以避免删除行时出现索引错误。通过将索引列表进行倒序排序,可以确保在删除行时按照正确的顺序进行操作。可以通过将sorted()函数的reverse参数设置为True来实现索引列表的倒序排序。这样,删除行的操作就会按照从后往前的顺序进行,避免了索引错误的问题。
代码演示:
def index1_sc(self):
try:
rows = self.gl.tableWidget_2.selectedItems()
row_list = []
if rows == []:
pass
else:
for row in rows:
row_list.append(row.row())
for i in sorted(set(row_list), reverse=True):
a = self.gl.tableWidget_2.item(i, 1).text()
sql = "DELETE FROM student_grades WHERE `学号` = %s;" % a
sql1 = "DELETE FROM student_information WHERE `学号` = %s;" % a
sql2 = "DELETE FROM users WHERE username = '%s';" % a
self.yu.execute(sql)
self.yu.execute(sql1)
self.yu.execute(sql2)
self.yu.connection.commit()
self.gl.tableWidget_2.removeRow(i)
tkinter.messagebox.showinfo('提示', '删除成功')
except:
tkinter.messagebox.showerror('警告', '发生错误')
文章有(3)条网友点评
0C3AFA4159D0
B04414571BA0
B04414571DB0
B04414571E70
B04414571F30
0C3AFA415AF0
0C3AFA4159D0
B04414571BA0
B04414571DB0
B04414571E70
B04414571F30
0C3AFA415AF0
B04414575980
0C3AFA415B20
9023B48628B0
9023B485E050
9023B4860000
9023B485E1A0
0C3AFA415B50
0C3AFA415A60
0C3AFA414CB0
0C3AFA414920
0C3AFA414AD0
0C3AFA414C20
0C3AFA414BC0
0C3AFA414800
0C3AFA414D10
0C3AFA414CE0
0C3AFA414B90
0C3AFA414E00