带着另一个问题再次回来。
前言:使用Qt Designer,搜索按钮,解析csv数据,并使用找到的数据构建我的TableWidget。
我有一个文件,它有两个相似的结果,例如,一个位置被标记为Reddit (North)和Reddit (South)。如果我搜索Reddit,只显示第一个结果,但当我再次按下搜索按钮时,它只显示第一个查找,而不是第二个。
问题:如何在第一次匹配时停止csv阅读器,在表格中填入从第一次命中找到的数据,然后再次点击搜索按钮以清除第一次命中并显示第二次命中?
def search(self):
self.table_search.setRowCount(6)
self.table_search.setColumnCount(1)
self.table_search.verticalHeader().setDefaultSectionSize(20)
self.table_search.verticalHeader().setVisible(True)
self.table_search.setVerticalHeaderLabels([
'Location ID:',
'Location Name:',
'Cost Center:',
'Street Address:',
'City:',
'State:']
)
# taking input from a PyQt line edit box
search = self.lineedit_locsearch.text()
search_string = search.strip().upper() # stripping white space from the string
# containers for specific data from the csv file
locid = ''
locname = ''
loccost = ''
locaddress = ''
loccity = ''
locstate = ''
with open('data/loc.csv', "r") as locdata:
reader = csv.reader(locdata)
for row in reader:
for field in row:
if field == search_string:
locid = row[0]
locname = row[1]
loccost = row[2]
locaddress = row[3]
loccity = row[4]
locstate = row[5]
locdata.close()
self.table_locsearch.setItem(0, 0, QtWidgets.QTableWidgetItem(locid))
self.table_locsearch.setItem(1, 0, QtWidgets.QTableWidgetItem(locname))
self.table_locsearch.setItem(2, 0, QtWidgets.QTableWidgetItem(loccost))
self.table_locsearch.setItem(3, 0, QtWidgets.QTableWidgetItem(locaddress))
self.table_locsearch.setItem(4, 0, QtWidgets.QTableWidgetItem(loccity))
self.table_locsearch.setItem(5, 0, QtWidgets.QTableWidgetItem(locstate))
https://stackoverflow.com/questions/51678591
复制相似问题