0

我需要一些帮助来否定 ObjectListView 的此过滤器。

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

这很好用,但如果我尝试像“鸡”一样过滤,那么它只会显示鸡。我希望它被反转,所以如果我输入鸡肉,除了鸡肉之外的所有东西都应该显示出来。

谢谢你的帮助!

4

1 回答 1

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
于 2016-10-05T11:06:54.977 回答