Python Tkinter Treeview поиск всех записей - PullRequest
0 голосов
/ 28 апреля 2018

Я использую древовидную структуру, чтобы показать все элементы, содержащиеся в папке.

Я создаю все записи с помощью этой функции:

def SUBS(path, parent):    
    for p in os.listdir(path):
        abspath = os.path.join(path, p)
        parent_element = tree.insert(parent, 'end', text=p, open=True)
        if os.path.isdir(abspath):
            SUBS(abspath, parent_element)

и теперь я хочу найти его с помощью этой функции:

def search(event, item=''): 
    children = tree.get_children(item)
    for child in children:
        text = tree.item(child, 'text')
        if text.startswith(entry.get()):
            tree.selection_set(child)

Проблема в том, что функция поиска осуществляет поиск только по первым «узлам». Не все. Итак, как мне искать детей ребенка? И как они называются?

1 Ответ

0 голосов
/ 28 апреля 2018

Почему вы не используете рекурсию, как в вашей функции SUBS?

def search(event, item=''): 
    children = tree.get_children(item)
    for child in children:
        text = tree.item(child, 'text')
        if text.startswith(entry.get()):
            tree.selection_set(child)
        search(None, item=child) # Use the function for all the children, their children, and so on..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...