Фильтр отрицания 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