Tk treeview column sort

后端 未结 5 2090
旧巷少年郎
旧巷少年郎 2020-11-30 05:26

Is there a way to sort the entries in a Tk Treeview by clicking the column? Surprisingly, I could not find any documentation/tutorial for this.

5条回答
  •  星月不相逢
    2020-11-30 05:55

    patthoyts from #tcl pointed out that the TreeView Tk demo program had the sort functionality. Here's the Python equivalent of it:

    def treeview_sort_column(tv, col, reverse):
        l = [(tv.set(k, col), k) for k in tv.get_children('')]
        l.sort(reverse=reverse)
    
        # rearrange items in sorted positions
        for index, (val, k) in enumerate(l):
            tv.move(k, '', index)
    
        # reverse sort next time
        tv.heading(col, command=lambda: \
                   treeview_sort_column(tv, col, not reverse))
    
    [...]
    columns = ('name', 'age')
    treeview = ttk.TreeView(root, columns=columns, show='headings')
    for col in columns:
        treeview.heading(col, text=col, command=lambda: \
                         treeview_sort_column(treeview, col, False))
    [...]
    

提交回复
热议问题