今天在写一个单一条件查询的按钮,然后一直卡在某些位置
主要存在几个问题:
1、首先查询一条数据后,再次查询前,需要先清空QTableWideget,这样就避免出现第二次查询时出现第一次查询的结果
2、查询后,插入数据时,没有显示,后面发现是自己粗心大意,把一行插入行的代码删了导致的,以后代码最好备份,先在一个单独的Py文件验证,验证OK后,再搬到总的Py文件中,或者把需要改的函数复制一份
3、查询数据时,下拉框中选中的第一条可以查询,第二条就查询不到,百思不得其解,后面就想着假设自己查第二条,按照我的代码应该如何实现,这才发现问题所在
4、总之,遇到了总总问题,后面都一一解决,所以不要放弃,未解决前有多郁闷,解决后就有多开心,给自己点个赞!!!
代码如下:
def search_information(self): rowlength1 = self.e.rowCount() #表中的行数 rowlength = len(self.sheet1.col_values(1)) #excel中总行数 collength = len(self.sheet1.row_values(0))-1 #excel中总列数(除掉备注) if rowlength1 > 0: # 如果表中存在数据,先删除 for i in range(0, rowlength): self.e.removeRow(0) else: pass a = [] for row in range(1, rowlength): if self.moudle1.currentText() == "": # 如果下拉框为空,则显示全部数据 self.e.insertRow(row-1) for col in range(0, collength): self.e.setItem(row-1, col, QTableWidgetItem(self.sheet1.row_values(row)[col])) elif(self.moudle1.currentText() == self.sheet1.row_values(row)[1]): # 如果下拉框的内容与excel中的内容一致,那么把对应的行号传给a a.append(row) searchlength = len(a) #搜索到的结果行数 for row in range(1,searchlength): # 把符合条件的数据插入到QTableWidget中 self.e.insertRow(row-1) for col in range(0,collength): self.e.setItem(row-1, col, QTableWidgetItem(self.sheet1.row_values(a[row-1])[col]))