2017-10-07 115 views
-1

有沒有方法通過點擊列來排序Tk Treeview中的記錄?Tkinter Treeview Column Sorting

我有一個Treeview數據庫表在Tkinter模塊中顯示。數據庫鏈接到數據來源的SQLite數據庫。

+0

(聽起來微不足道的,這取決於究竟是什麼'點擊column'意味着:請詳細說明) – greybeard

+0

@greybeard您好我的意思是當您單擊列標題,它將按升序或降序對該列進行排序。謝謝! –

回答

0

here

for col in Columns: 
     treeview.heading(col, text=col, command=lambda _col=col: \ 
         treeview_sort_column(treeview, _col, False)) 
+0

謝謝@Mayur Shingote,但是當嘗試這樣做時,我會發生名稱錯誤。 「NameError:name'treeview'未定義」不太確定這是爲什麼。 –

0

@Mayur有正確的想法,只是錯過了包括treeview_sort_column定義。我可以擔保這項技術,儘管我實施的調用與命令選項不同。您可以在this link審查,以及(儘管它可能在未來的模具)

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