你有兩個可能的步驟在這裏完成。
- 將數據讀入模型
- 互動與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