在插入后自动对ttk树状图中的条目进行排序

在插入后自动对ttk树状图中的条目进行排序

问题描述:

有没有类似于这个帖子python ttk treeview sort numbers但没有按下标题的结果?插入项目后,最好的方法是正确的。在插入后自动对ttk树状图中的条目进行排序

要在每次插入新项目后对Treeview进行排序,只需在代码中的正确位置添加一个显式调用到排序函数。

示例代码:

import tkinter as tk 
from tkinter import ttk 

counter = 0 
numbers = ['1', '10', '11', '2', '3', '4', '24', '12', '5'] 

def sort_treeview(): 
    content = [(tv.set(child, column), child) 
           for child in tv.get_children('')] 
    try: 
     content.sort(key=lambda t: int(t[0])) 
    except: 
     content.sort() 
    for index, (val, child) in enumerate(content): 
     tv.move(child, '', index) 

def add_item(): 
    global counter 
    if counter < 8: 
     tv.insert('', 'end', values=numbers[counter]) 
     counter += 1 
     # Sort the treeview after the new item was inserted 
     # ------------------------------------------------- 
     sort_treeview() 

root = tk.Tk() 
column = 'number' 
tv = ttk.Treeview(root, columns=column, show='headings') 
tv.pack() 

button = tk.Button(root, text='Add entry', command=add_item) 
button.pack() 

root.mainloop()