Как получить оглавление TreeView

(Python 3.8, tkinter.ttk)
Здравствуйте, нужно сделать сортировку дерева по нажатию на "оглавление". Проблема в том, что нужно получить имя/ номер оглавления, на которое нажали, дабы выполнить сортировку.
(В дереве есть как дата, так и строки/числа)
Как получить имя оглавления, на которое нажали? Перерыл много ресурсов, так и не смог найти ответ...


Ответы (1 шт):

Автор решения: Vnikita Studios

Коллективная помощь оказалась полезна. Если кто наткнётся на такой же вопрос, то вот решение:

from datetime import date as Dtt         

Сортировка столбцов Treeview в Tkinter - скопировал отсюда сортировку, сделал проверку на наличие "точек" в полученном массиве списков "l" (Так как 2 типа данных, которые он не может сортировать, содержат точки = Дата в формате: ДД.ММ.ГГГГ и float соответственно)).
Если точка одна, то случайная переменная(назовём select_func) = 1, две точки - select_func = 2.(Весь код идёт над "l.sort", что в решении по ссылке)

    select_func = 0
    for one_l in l:
        if '.' in one_l[0]:
            if len(one_l[0].split('.'))<3:
                select_func = 1
            elif 2<len(one_l[0].split('.'))<4
                select_func = 2

Далее идёт вызов функции проверки (// сортировки(Если это дата/float)). У функции проверки 2 входные: массив со списками "l" и переменная select_func.(Это всё перед командой "l.sort", которая по ссылке)

    l = prover_ochka(l,select_func)

Первым же делом создаём двумерный массив из массива списков "l"(Так как списки не изменяемые).

    def prover_ochka(l,select_func)
        mda = []
        for i in mda:
            kon = []
            kon.append(i[0])
            kon.append(i[1])
            mda.append(kon)

Далее мы проверяем значение select_func, которое будет определять нашу сортировку.

    if select_func == 1:
        for i in mda:
            if i[0].isdigit() == True:
                i[0] = float(i[0])
            elif i[0].split('.')[0].isdigit() == True and i[0].split('.')[1].isdigit() == True:
                i[0] = float(i[0])
            else:
                return None
        return mda 
    elif select_func == 2:
        for i in mda:
            date_i = i[0]
            i[0] = Dtt(int(date_i[6:]),int(date_i[3:5]),int(date_i[:2]))
        return mda
    else:
        return mda

Далее мы возвращаемся в функцию сортировки...

    l = prover_ochka(l,select_func)
    if l != None:
        if select_func != 2:
            l.sort(reverse = reverse)
        else:
            l.sort(reverse = reverse, key = lambda x: x[0])
        for index, (val, k) in enumerate(l)# продолжение кода, что по ссылке

Извиняюсь, не могу скинуть весь код в связи с незнанием, будут ли проблемы при сдаче курсовой работы(Возможно, их как-то проверяют, не в курсе).
В целом, меня устраивает данное решение, так как ключевые элементы(точки) в любом случае проверяются на вводе данных(они будут всегда, в нужном кол-ве). Если у вас такого нет - проблема не велика, но код может пригодится.

→ Ссылка