你有两个可能的步骤在这里完成。
- 将数据读入模型
- 互动与tablewidget和搜索领域
为了让您开始,在您的数据读入一个简单而直接的方法是使用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)
来源
2012-01-08 17:38:24
jdi
你到目前为止尝试过什么?将数据存入表模型中有问题吗?还是你有问题的表格部件本身? – jdi 2012-01-08 16:52:36
第一部分与[此问题]非常相似(http://stackoverflow.com/q/8775447/1052325)。它是功课吗?提供代码和错误。 – reclosedev 2012-01-08 16:56:46