wxPython - 根据输入到textctrl动态更新listctrl

Woo*_*ker 5 python wxpython dynamic listctrl

你们中的任何人都有一个例子如何使以下成为可能:

我有一个listctrl显示> 600项.现在,我需要在这些项目中搜索用户输入的文本,并更新列表以仅显示包含此字符串的项目.

所以我们说这个列表包含"Hello","Hi"和"Morning".该列表显示所有三个项目.现在用户在textctrl中键入"h",listctrl缩小为"Hello"和"Hi".如果用户改为输入"o",则列表变为"Hello"和"Morning".

这可能吗?或者有没有其他方便的方法来查找listctrl中的项目?如果您确切地知道您搜索的内容,那么"在您键入时查找"的构建仅具有实际用途 - 在我的情况下,实际情况并非如此......

谢谢,Woodpicker

Mar*_*ark 4

wxPython 演示内置了一个非常好的“预先输入”过滤器。查看Main.py 的源代码,他们以“手动方式”进行操作,循环并重建列表。他们使用的是树视图,但想法是合理的:

def OnSearch(self, event=None):

    value = self.filter.GetValue()
    if not value:
        self.RecreateTree()
        return

    wx.BeginBusyCursor()

    for category, items in _treeList:
        self.searchItems[category] = []
        for childItem in items:
            if SearchDemo(childItem, value):
                self.searchItems[category].append(childItem)

    wx.EndBusyCursor()
    self.RecreateTree()    
Run Code Online (Sandbox Code Playgroud)