虽然它很简单,但我无法做到。
我有txt文件,其中包含名称,姓氏,邮件和电话号码:
name surname phone mail
name surname phone mail
name surname phone mail
所有内容都与标签分开,邮件结束后每行结尾都有换行符
现在我想在文件中搜索特定名称即时搜索,并在单击TableWidget中的按钮搜索时显示结果(使用python Qt)。
它很简单,但我有一些错误我无法解决。
感谢您的帮助。
答案 0 :(得分:2)
这里有两个可能的步骤。
要开始使用,一种简单直接的数据读取方法是使用csv模块。您还可以创建一个可以直接从csv文件中读取的自定义表模型,但我认为这超出了我们现在的水平。
以下是将文本文件转换为数据结构的简单方法:
import csv
people = []
reader = csv.reader(open('people.txt'), delimiter='\t')
for row in reader:
people.append(row)
现在人们将在表格中包含所有行:(姓名,电子邮件)
从这里,您可以填充TableWidget。这是一个非常基本的片段,可以给你一个想法:
from PyQt4 import QtGui
rowCount = len(people)
colCount = max([len(p) for p in people])
tableWidget = QtGui.QTableWidget()
tableWidget.setRowCount(rowCount)
tableWidget.setColumnCount(colCount)
for row, person in enumerate(people):
for column, value in enumerate(person):
newItem = QtGui.QTableWidgetItem(value)
tableWidget.setItem(row, column, newItem)
如果每行上的字段数量不均衡,则colCount只是一点点保护。这只是一种通用的方法。
从这里可以看出你想如何进行搜索。但是你可以做的是将搜索按钮连接到处理搜索的方法。请记住,我将所有这些都写成全局函数。您可能会拥有自己的课程,并且在任何地方都使用self
。但我保持简短:
myButton.clicked.connect(search)
def search(*args, **kwargs):
value = myLineEdit.text()
items = tableWidget.findItems(value, QtCore.Qt.MatchContains)
if items:
# scroll to the first match?
tableWidget.scrollToItem(items[0], tableWidget.PositionAtCenter)