ここでは2つのステップを実行できます。
- モデルにあなたを始めるためにあなたの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
最初の部分は[この質問](http://stackoverflow.com/q/8775447/1052325)と非常によく似ています。宿題ですか?コードとエラーを提供する – reclosedev