복붙노트

[PYTHON] Tk treeview 열 정렬

PYTHON

Tk treeview 열 정렬

열을 클릭하여 Tk Treeview에서 항목을 정렬하는 방법이 있습니까? 놀랍게도, 나는이 문서 / 튜토리얼을 찾을 수 없습니다.

해결법

  1. ==============================

    1.#tcl의 patthoyts는 TreeView Tk 데모 프로그램에 정렬 기능이 있음을 지적했습니다. 다음은 파이썬과 동일합니다.

    #tcl의 patthoyts는 TreeView Tk 데모 프로그램에 정렬 기능이 있음을 지적했습니다. 다음은 파이썬과 동일합니다.

    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))
    [...]
    
  2. ==============================

    2.이 python3에서 작동하지 않았다. 변수가 참조로 전달되었으므로 모든 람다는 결국 열의 동일한 요소, 마지막 요소를 참조하게됩니다.

    이 python3에서 작동하지 않았다. 변수가 참조로 전달되었으므로 모든 람다는 결국 열의 동일한 요소, 마지막 요소를 참조하게됩니다.

    이것은 나를 위해 속임수를했다 :

    for col in columns:
        treeview.heading(col, text=col, command=lambda _col=col: \
                         treeview_sort_column(treeview, _col, False))
    
  3. from https://stackoverflow.com/questions/1966929/tk-treeview-column-sort by cc-by-sa and MIT license