2017-10-07 150 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)) 
[...]