Искать элементы в wx Python ListCtrl - PullRequest
0 голосов
/ 06 января 2020

Проще говоря, я создаю диспетчер игрушечных задач с помощью wx python и psutil. У меня есть searchCtrl в верхней части списка. Но я не смог найти способ показать только соответствующие элементы в этом списке. Я попытался создать список всех задач, а затем удалить все элементы, кроме соответствующих, но, к сожалению, это не работает, поскольку список обновлялся каждые 5 секунд.

    def on_search_task(self , e): # this function got executed when the a search event is fired
        index = 0
        keepitems = []
        for x in self.alltasks:
            for a in dict(x).values():
                if a.find(e.GetString()) >= 0:
                    print("match at {} - {}".format(index , self.alltasks.index(x)))
                    print(self.alltasks.index(x) == index)
                else:
                    keepitems.append(index)

            index += 1

        for x in keepitems:
            self.task_list.DeleteItem(x)

Надеюсь, я смог опишите проблему и мою цель. Исходный код с текущим прогрессом также доступен на GitHub здесь https://github.com/bauripalash/taskboy для дальнейшего использования.

1 Ответ

1 голос
/ 07 января 2020

Вам необходимо использовать «виртуальный» элемент управления списком, то есть один, возвращающий элементы по требованию, и выполнить фильтрацию в вашем OnGetItemText(). См. вики для краткого объяснения элементов управления виртуальным списком.

...