PyQt5过滤的数据框

问题描述 投票:0回答:1

感谢您抽出宝贵的时间来帮助我。我有一个非常接近我想要的示例,但是我无法使其完全匹配。在下面的示例中,如果在行编辑中输入“ A”,则将获得多个匹配。我希望用户必须具有“ Apple”才能将其作为整个字符串进行匹配。我真正的代码中的问题是我有CM和CMI,我希望过滤器仅显示一个。

from PySide import QtCore, QtGui

app = QtGui.QApplication([])
window = QtGui.QWidget()

# standard item model
model = QtGui.QStandardItemModel(5, 3)
model.setHorizontalHeaderLabels(['ID', 'DATE', 'VALUE'])
for row, text in enumerate(['Cell', 'Fish', 'Apple', 'Ananas', 'Mango']):
    item = QtGui.QStandardItem(text)
    model.setItem(row, 2, item)

# filter proxy model
filter_proxy_model = QtGui.QSortFilterProxyModel()
filter_proxy_model.setSourceModel(model)
filter_proxy_model.setFilterKeyColumn(2) # third column

# line edit for filtering
layout = QtGui.QVBoxLayout(window)
line_edit = QtGui.QLineEdit()
line_edit.textChanged.connect(filter_proxy_model.setFilterRegExp)
layout.addWidget(line_edit)

# table view
table = QtGui.QTableView()
table.setModel(filter_proxy_model)
layout.addWidget(table)

window.show()
app.exec_()
python model pyqt5 qtableview
1个回答
1
投票
def fullFilter(text): filter_proxy_model.setFilterRegExp('^{}$'.format(text)) line_edit.textChanged.connect(fullFilter) # to ignore case sensitivity (matching "apple", "aPpLe", etc.): filter_proxy_model.setFilterCaseSensitivity(False)

^符号表示匹配必须在字符串的

开始,而$确保匹配也必须在字符串的[[end。] >
© www.soinside.com 2019 - 2024. All rights reserved.