2009-12-27 10 views
8

क्या कॉलम पर क्लिक करके Tk Treeview में प्रविष्टियों को सॉर्ट करने का कोई तरीका है? हैरानी की बात है, मुझे इसके लिए कोई दस्तावेज/ट्यूटोरियल नहीं मिला।अधिक वृक्षदृश्य कॉलम सॉर्ट

+0

#tcl के साथ साथ, Tkinter अनुसंधान के लिए अन्य उपयुक्त संसाधनों Tkinter मेलिंग सूची और विकी कर रहे हैं। –

उत्तर

19

patthoyts#tcl से इंगित किया गया कि 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)) 
[...] 
8

यह पायथन 3 में काम नहीं करता है। चूंकि वेरिएबल संदर्भ द्वारा पारित किया गया था, इसलिए सभी लैम्बडा कॉलम में समान, अंतिम, तत्व को प्रतिबिंबित करते हैं।

यह मेरे लिए चाल किया:

for col in columns: 
    treeview.heading(col, text=col, command=lambda _col=col: \ 
        treeview_sort_column(treeview, _col, False)) 
संबंधित मुद्दे