дерево сортировки - PullRequest
       4

дерево сортировки

0 голосов
/ 20 марта 2019

на основе примеров и помощи Генри Я придумал следующий код для сортировки дерева в виде дерева tkinter, но он не работает. Я не получаю никаких ошибок, но дерево не отсортировано. Любая помощь приветствуется.

def treeview_sort_column(tv, col, reverse):
    l = [(tv.set(k, col), k) for k in tv.get_children('')]
    l.sort(key=lambda t: int(t[0]), reverse=reverse)
    #      ^^^^^^^^^^^^^^^^^^^^^^^

    for index, (val, k) in enumerate(l):
        tv.move(k, '', index)

    tv.heading(col,
               command=lambda: treeview_sort_column(tv, col, not reverse))


def SortTree():

    columns = ('#0',)

    for col in columns:
        tree.heading(col, text=col,
                         command=lambda c=col: treeview_sort_column(tree, c, False))

1 Ответ

0 голосов
/ 21 марта 2019

Поскольку вы просто добавляете команду в столбец #0, вам не нужно помещать ее в цикл.

from tkinter import ttk
import tkinter as tk

root = tk.Tk()
tree = ttk.Treeview(root,height=10)
tree.pack()

def treeview_sort_column(tv, col, reverse):
    l = [(tv.item(k)["text"], k) for k in tv.get_children()] #Display column #0 cannot be set
    l.sort(key=lambda t: t[0], reverse=reverse)

    for index, (val, k) in enumerate(l):
        tv.move(k, '', index)

    tv.heading(col, command=lambda: treeview_sort_column(tv, col, not reverse))

tree.heading("#0", command=lambda : treeview_sort_column(tree, "#0", False))

for i in range(10):
    tree.insert("",0,text=i)

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...