在QTableWidget中使用Filter选项可以通过以下步骤实现:
下面是一个示例代码,演示如何在QTableWidget中使用Filter选项:
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QLineEdit, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.table_widget = QTableWidget()
self.filter_edit = QLineEdit()
layout = QVBoxLayout()
layout.addWidget(self.filter_edit)
layout.addWidget(self.table_widget)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
self.init_table()
self.filter_edit.textChanged.connect(self.filter_table)
def init_table(self):
self.table_widget.setColumnCount(3)
self.table_widget.setHorizontalHeaderLabels(['Name', 'Age', 'Gender'])
data = [
['Alice', '25', 'Female'],
['Bob', '30', 'Male'],
['Charlie', '35', 'Male'],
['Diana', '28', 'Female'],
['Eva', '32', 'Female']
]
self.table_widget.setRowCount(len(data))
for row, row_data in enumerate(data):
for col, col_data in enumerate(row_data):
item = QTableWidgetItem(col_data)
self.table_widget.setItem(row, col, item)
def filter_table(self, text):
for row in range(self.table_widget.rowCount()):
should_show = False
for col in range(self.table_widget.columnCount()):
item = self.table_widget.item(row, col)
if text.lower() in item.text().lower():
should_show = True
break
self.table_widget.setRowHidden(row, not should_show)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
在这个示例中,我们创建了一个包含姓名、年龄和性别的表格,并在窗口上方添加了一个用于过滤的文本框。用户可以在文本框中输入过滤条件,表格会根据条件动态显示匹配的行。
这个示例中使用了QTableWidget来展示数据,QTableWidgetItem用于设置每个单元格的数据。filter_table函数根据用户输入的过滤条件,遍历每一行的数据,并根据条件决定是否显示该行。
这只是一个简单的示例,你可以根据实际需求进行修改和扩展。如果你想了解更多关于QTableWidget的用法,可以参考腾讯云的官方文档:QTableWidget使用文档。
领取专属 10元无门槛券
手把手带您无忧上云