Как фильтровать элементы в QListWidget - PullRequest
0 голосов
/ 30 марта 2020

У меня есть следующий QlistWidget:

self.myListWidget1 = QListWidget()    

os.chdir("./Downloads")
for file in glob.glob("*.pdf"):
  QListWidgetItem(file, self.myListWidget1)
self.myListWidget1.sortItems()

Как добавить QLineEdit, который может фильтровать элементы в self.myListWidget1 по частичной строке?

1 Ответ

0 голосов
/ 30 марта 2020

Вам понадобится отдельный список, для которого вы будете выполнять фильтрацию, а затем отображать отфильтрованный список в QListWidget.

Самый базовый c пример может выглядеть следующим образом:

    self.myLineEdit = QLineEdit()
    self.myListWidget1 = QListWidget()
    self.listOfPdfs = [] # this will hold the complete list of files

    os.chdir("./Downloads")
    for file in glob.glob("*.pdf"):
        self.listOfPdfs.append(file) # fill the list
        QListWidgetItem(file, self.myListWidget1)

    # connect the signal textChanged to the filter function
    self.myLineEdit.textChanged.connect(self.filterList)

def filterList(self, text):
    self.myListWidget1.clear() # clear the list widget
    for file on self.listOfPdfs:
       if text in file: # only add the line if it passes the filter
           QListWidgetItem(file, self.myListWidget1)


(обратите внимание, что я не проверял правильность кода, могут потребоваться незначительные изменения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...