2017-10-07 2 views
-1

Gibt es eine Möglichkeit, die Datensätze in einer Tk Treeview zu sortieren, indem Sie auf die Spalte klicken?Tkinter Treeview Spaltensortierung

Ich habe eine Treeview-Datenbanktabelle in einem Tkinter-Modul angezeigt. Die Datenbank ist mit einer SQLite-Datenbank verknüpft, aus der die Daten stammen.

+0

(Klingt trivial, je nachdem, was genau 'durch die column' klicken bedeutet:. Bitte erarbeiten) – greybeard

+0

Hallo @greybeard ich meine, wenn Wenn Sie auf die Spaltenüberschrift klicken, wird diese Spalte aufsteigend oder absteigend sortiert. Vielen Dank! –

Antwort

0

Von here

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

Danke @Mayur Shingote, aber wenn ich dies versuche, bekomme ich einen Namensfehler auftreten. "NameError: Name 'Treeview' ist nicht definiert" Nicht sicher, warum dies so ist. –

0

@Mayur hatte die richtige Idee, nur von treeview_sort_column einschließlich der Definition verpasst. Ich kann für die Technik bürgen, obwohl ich den Aufruf anders als die Befehlsoption implementiert habe. Sie können ihn unter this link auch überprüfen (obwohl es in der Zukunft sterben)

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