Фильтр отрицания python ObjectListView

Мне нужна помощь с отменой этого фильтра для ObjectListView.

def addFilter(self, text):
    # OLV.Filter.Predicate()
    meter_flt = OLV.Filter.TextSearch(self, text=text)
    self.SetFilter(meter_flt)

Это прекрасно работает, но если я попытаюсь фильтровать как "курица", то это будет показывать только цыплят. Я хочу, чтобы все было наоборот, поэтому, если я наберу курицу, все, кроме курицы, должно отображаться.

Спасибо за вашу помощь!

1 ответ

Решение

Ты можешь использовать Filter.Predicate

Filter.Predicate(booleanCallable) Показать только те объекты модели, для которых данный вызываемый объект возвращает true. Вызываемый объект должен принимать один параметр, который является объектом модели для рассмотрения.

Ниже приведен фрагмент кода для обработки нескольких текстов, которые должны быть исключены из списка элементов.

def __init__(self):
    self.text_list = [] # list of text to be excluded
    self.SetFilter(Filter.Predicate(self.filterMethod))

def addFilter(self, text):
    self.text_list.append(text)
    self.RepopulateList() # so that our filter_method is applied again

def filterMethod(self,obj):
    for text in self.text_list:
        if {YOUR EXCLUSION LOGIC HERE}:
            return False
    return True
Другие вопросы по тегам