python ObjectListView否定过滤器

时间:2016-10-04 13:59:32

标签: python wxpython filtering objectlistview objectlistview-python

我需要一些帮助来为ObjectListView否定这个过滤器。

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

这很好用,但如果我尝试过滤像“鸡”那么它只会显示鸡。我希望它能被颠倒,所以如果我打字鸡肉,应该展示除鸡肉之外的所有东西。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用Filter.Predicate

  

Filter.Predicate(booleanCallable)仅显示模型对象   给定的callable返回true。可调用者必须接受a   单个参数,是要考虑的模型对象。

以下是用于处理要从项目列表中排除的多个文本的代码段。

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