Python 如何在treeview中对值进行排序

Python 如何在treeview中对值进行排序,python,treeview,Python,Treeview,我试图按完成时间对值进行排序,但仍然失败。见下图![ 我希望finish time列按升序排序 def treeview_sort_column(tv, col, reverse): l = [(tv.set(k, col), k) for k in tv.get_children('')] l.sort(key=lambda t: int(t[0]), reverse=reverse) # ^^^^^^^^^^^^^^^^^^^^^^^ for in

我试图按完成时间对值进行排序,但仍然失败。见下图![

我希望finish time列按升序排序

def treeview_sort_column(tv, col, reverse):
    l = [(tv.set(k, col), k) for k in tv.get_children('')]
    l.sort(key=lambda t: int(t[0]), reverse=reverse)
    #      ^^^^^^^^^^^^^^^^^^^^^^^

    for index, (val, k) in enumerate(l):
        tv.move(k, '', index)

    tv.heading(col,
               command=lambda: treeview_sort_column(tv, col, not reverse))
def showresult():
    global result_screen
    ga_screen = Toplevel(screen)
    ga_screen.title('detail result')

    tree = ttk.Treeview(ga_screen)
    ysb = ttk.Scrollbar(tree, orient='vertical', command=tree.yview)
    xsb = ttk.Scrollbar(tree, orient='horizontal', command=tree.xview)
    tree.configure(yscroll=ysb.set, xscroll=xsb.set)

    tree["columns"]=("two",'three','four')
    tree.column("#0", width=100)
    tree.column("two", width=100)
    tree.column('three', width=100)
    tree.column('four', width=100)
    tree.heading("#0", text="job number")
    tree.heading("two", text="process time",command=lambda: 
                     treeview_sort_column(tree,'two', False))
    tree.heading("three", text="finish time",command=lambda:
                     treeview_sort_column(tree,'three', False))
    tree.heading("four", text="due date",command=lambda: 
                     treeview_sort_column(tree,'four', False))

    for i in range(len(l_best)):
        prc_choosen = 0
        print('machine number:',i+1)
        for k in range(num_job):
            if k%mch_num_info ==i:
                prc_choosen=prc_choosen+p[sequence_best[k][0]][sequence_best[k][1]]
                print('job no', l[sequence_best[k][0]][sequence_best[k][1]],'prc time:',p[sequence_best[k][0]][sequence_best[k][1]]
                        ,'flow time:',prc_choosen,'due date:',d[sequence_best[k][0]][sequence_best[k][1]])

    for i in range(len(l_best)):
        prc_choosen = 0
        tree.insert("" , i,f'machine {i}', text=f"machine {i+1}")
        for k in range(num_job):
            if k%mch_num_info ==i:
                prc_choosen=prc_choosen+p[sequence_best[k][0]][sequence_best[k][1]]     
                tree.insert(f'machine {i}', i, text=f"job {l[sequence_best[k][0]][sequence_best[k][1]]}", 
                            values=(f"{p[sequence_best[k][0]][sequence_best[k][1]]}",
                                    f"{prc_choosen}",
                                    f'{d[sequence_best[k][0]][sequence_best[k][1]]}'))

    tree.pack()

我又看了一眼这个问题,没有更多信息就无法回答。尽量避免使用太多全局变量(如
l\u best
num\u job
)或者,如果这些是常量,请在程序开始时在所有CAP中定义它们。此外,这些只是函数定义。我不知道您执行程序的顺序。请提供可执行但最低版本的代码。有关更多信息,请参阅。我再次查看了该问题,没有更多信息无法回答。请重试为了避免使用太多全局变量(如
l_best
num_job
),或者如果这些变量是常量,请在程序开始时在所有CAP中定义它们。此外,这些只是函数定义。我不知道程序的执行顺序。请提供可执行但最低版本的代码。有关更多信息,请参阅。