我要在输入搜索栏时隐藏不相关的结果,并且一旦清除搜索栏以再次显示listWidget中的所有项目。

老实说,我不确定该怎么做,因为我是编程的新手(从3周前开始)。目前,我正在考虑可以执行if> then语句来隐藏项目,但是我不知道如何使用findItems()方法进行处理。

def searchItem(self):
    search_string = self.textEdit.toPlainText() """pulling the text from a text edit box"""
    items = self.listWidget.findItems(search_string, Qt.MatchContains)
    for item in items:
        if item:
            item.setHidden(False)
        else:
            item.setHidden(True)


目前,这基本上什么都不做。如果我添加Print(item.text()),它只会打印相关项目,使我觉得自己处在正确的轨道上。

感谢您的任何建议。

最佳答案

您应该做的是遍历QListWidget中的所有项目,而不仅仅是与文本匹配的项目,如果项目不在匹配的项目中,则将其隐藏。

def searchItem(self):
    search_string = self.textEdit.toPlainText()
    match_items = self.listWidget.findItems(search_string, Qt.MatchContains)
    for i in range(self.listWidget.count()):
        it = self.listWidget.item(i)
        it.setHidden(it not in match_items)

关于python - 使用QlistWidget进行主动搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57764723/

10-12 22:20