您可以在这里完成两个可能的步骤。
- 将数据读入您的模型
- 与您的表格小部件和搜索字段交互
首先,读取数据的一种简单直接的方法是使用 csv 模块。您还可以创建一个直接从 csv 文件读取的自定义表模型,但我认为这超出了我们现在的水平。
这是将文本文件转换为数据结构的简单方法:
import csv
people = []
reader = csv.reader(open('people.txt'), delimiter='\t')
for row in reader:
people.append(row)
现在人们将在表单中包含您的所有行:(姓名,姓氏,电子邮件)
从这里,您可以填充您的 TableWidget。这是一个非常基本的 sn-p,应该会给你这个想法:
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)