tkinter treeview 排序
时间: 2023-04-28 20:06:00 浏览: 175
Tkinter的Treeview控件可以通过设置列的比较函数来实现排序。比较函数需要接受两个参数,分别是要比较的两个行的ID。比较函数需要返回一个整数值,表示两个行的大小关系。如果第一个行小于第二个行,返回-1;如果两个行相等,返回0;如果第一个行大于第二个行,返回1。
以下是一个示例代码,实现了按照第一列的值进行升序排序:
```
import tkinter as tk
from tkinter import ttk
class App:
def __init__(self, master):
self.tree = ttk.Treeview(master, columns=('col1', 'col2'))
self.tree.heading('col1', text='Column 1', command=lambda: self.sort_column('col1', True))
self.tree.heading('col2', text='Column 2', command=lambda: self.sort_column('col2', False))
self.tree.pack()
self.tree.insert('', 'end', values=('A', '1'))
self.tree.insert('', 'end', values=('B', '2'))
self.tree.insert('', 'end', values=('C', '3'))
self.tree.insert('', 'end', values=('D', '4'))
def sort_column(self, col, reverse):
data = [(self.tree.set(child, col), child) for child in self.tree.get_children('')]
data.sort(reverse=reverse)
for index, (val, child) in enumerate(data):
self.tree.move(child, '', index)
root = tk.Tk()
app = App(root)
root.mainloop()
```
在上面的代码中,我们通过`heading`方法设置了每一列的标题,并且通过`command`参数指定了点击标题时的回调函数。在回调函数中,我们首先获取所有行的数据,并且根据要排序的列进行排序。最后,我们通过`move`方法将行移动到正确的位置。
阅读全文