在QLineEdit()中输入一个值之后,我想通过按search按钮只显示QTableWidget中的行

2024-09-30 18:13:36 发布

您现在位置:Python中文网/ 问答频道 /正文

当您在由QLineEdit()函数创建的编辑窗口中输入一个值,然后单击QPushButton时,您试图只打印与在编辑窗口中输入的值匹配的行。如果按搜索按钮而不输入任何内容,则希望再次看到所有结果(行)。你知道吗

我使用setRowHidden()来实现这一点,但没有看到上面的结果。你知道吗

是否有提供上述功能的功能?我想知道是否有解决办法。你知道吗

我尝试将setRowHidden()的参数值更改为True或False,但无法获得所需的结果。你知道吗

def OnFilter(self):
    for i in range(0, tableWidget.rowCount()):
        item = tableWidget.item(i, 1)
        if (item is not None and item.data(QtCore.Qt.EditRole) == (self.SearchEdit.text())):
            tableWidget.setRowHidden(i, False)
        else:
            tableWidget.setRowHidden(i, True)


self.SearchEdit = QLineEdit()
self.SearchButton = QPushButton("search")
self.SearchButton.clicked.connect(self.OnFilter)

如果在当前编辑窗口中输入值后按搜索按钮,则只输出相应的行。但是,如果您试图通过清除“编辑”窗口中输入的值并按“搜索”按钮来查看整个值(行),则不会输出任何内容。你知道吗


Tags: self功能falsetrue编辑内容item按钮
1条回答
网友
1楼 · 发布于 2024-09-30 18:13:36

你是说当self.SearchEdit.text()==“”应显示所有行,但代码将空字符串(“”)视为关键字,并尝试在表中匹配它。

在函数中放入if语句,以便ifself.SearchEdit.text()==“”,显示所有行。

您可以这样做:

    def OnFilter(self):
        if self.SearchEdit.text() == "":
            for i in range(0, tableWidget.rowCount()):
                tableWidget.setRowHidden(i, False)
            return
        for i in range(0, tableWidget.rowCount()):
            item = tableWidget.item(i, 1)
            if (item is not None and item.data(QtCore.Qt.EditRole) == 
            (self.SearchEdit.text())):
                tableWidget.setRowHidden(i, False)
            else:
                tableWidget.setRowHidden(i, True)

相关问题 更多 >