我需要一些帮助来否定ObjectListView的这个过滤器。
def addFilter(self, text):
# OLV.Filter.Predicate()
meter_flt = OLV.Filter.TextSearch(self, text=text)
self.SetFilter(meter_flt)
这个效果很好,但是如果我尝试过滤"鸡",那么它只显示鸡。我想把它反过来,所以如果我输入chicken,除了chicken之外的所有内容都应该显示出来。
谢谢你的帮助!
您可以使用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