Eks6666 发表于 2024-7-3 23:32

tkinter Treeview组件排序

import tkinter
from tkinter import ttk



# 1.创建root主窗口
root = tkinter.Tk()
root.title('人生苦短-我用python')# 窗口标题
root.geometry("450x150")# 窗口的宽度和高度
# 设置纵向滚动条
scorllbary = tkinter.Scrollbar(root)
scorllbary.pack(side=tkinter.RIGHT, fill=tkinter.Y)
# 0.数字+文本排序
def treeview_sort(tv, col, reverse):
    l = [(tv.set(k, col), k) for k in tv.get_children('')]
    # print(l)
    # print(l)
    # 1.处理数据里面的单位
    if '元' in l:
      # 如果第一行的数据里存在 '元' 的文本
      l.sort(key=lambda t: int(t.replace('元', '')), reverse=reverse)# 把单位去除后转数字再排序
    else:
      try:
            # 优先尝试数字排序
            l.sort(key=lambda t: int(t), reverse=reverse)
      except:
            # 出错则普遍排序
            l.sort(reverse=reverse)
            # 这种排序根据首位字符来排序,不适合数字,会出现:1,11,2 这种不符合从大到小或从小到大的排序
    print(l)
    # 移动数据
    for index, (val, k) in enumerate(l):
      # print(k)
      tv.move(k, '', index)

    tv.heading(col, command=lambda: treeview_sort(tv, col, not reverse))


# 2.创建Treeview表格组件
tree = ttk.Treeview(root, show='headings',yscrollcommand=scorllbary.set)
# 创建表格对象,show='headings' 为隐藏首列,height 为表格高度(行)
columns = {
    'ID': 50,
    '作者': 80,
    '性别': 80,
    '年龄': 80,
    '工资': 80,
    '朝代': 80
}# 列头标题和对应的宽度,随便增删改查

# 批量设置列头标题
tree['columns'] = list(columns)

# 批量设置列属性
for column in columns:
    # 设置列标题
    tree.heading(column, text=column)
    tree.column(column, width=columns, anchor='center')
    # 设置列酷安,anchor 为锚点,'center' 表示中央居中
    # 也可以用方位词东南西北的英文缩写表示,即 N(North, 北): 上中对齐、SW(South West, 西南):左下对齐
    # tree.column(column, width=columns, anchor=tkinter.SW)
    # anchor: n, ne, e, se, s, sw, w, nw, or center
    # 3.设置点击执行排序操作
    tree.heading(column, command=lambda _col=column: treeview_sort(tree, _col, False))

# 3.要导入表格的行数据
Data = [
    ,
    ,
    ,
    ,
    ,
    ,
    ,
]
# 遍历导入数据
for person in Data:
    tree.insert('', 'end', text='', values=person)

scorllbary.config(command=tree.yview)
# 4.显示 Treeview 部件
tree.pack(side='top', fill='both', expand=True)
# 使窗口可视化
root.mainloop()

lth123lth123 发表于 2024-7-4 02:20

谢谢分享 爱你宝贝

Eks6666 发表于 2024-7-4 09:56

lth123lth123 发表于 2024-7-4 02:20
谢谢分享 爱你宝贝

铁子好好爱你男朋友,我不配{:1_918:}

lth123lth123 发表于 2024-7-5 01:51

Eks6666 发表于 2024-7-4 09:56
铁子好好爱你男朋友,我不配

不不不你配你很配可以的哈哈哈哈哈

随遇而安8 发表于 2024-7-6 10:17

注释很清楚,学习了,多多分享~

HR741158 发表于 2024-7-6 13:45

收藏学习

zhangmi008 发表于 2024-7-7 10:16

学习一下,目前有个困难,我运行一个搜索文件的代码,想着搜索结果可以在界面实时更新,结果界面卡死。试了多线程也不行

Eks6666 发表于 2024-7-9 00:04

zhangmi008 发表于 2024-7-7 10:16
学习一下,目前有个困难,我运行一个搜索文件的代码,想着搜索结果可以在界面实时更新,结果界面卡死。试了 ...

代码发出来给你指导下

xmwzx123 发表于 2024-7-10 15:23

zhangmi008 发表于 2024-7-7 10:16
学习一下,目前有个困难,我运行一个搜索文件的代码,想着搜索结果可以在界面实时更新,结果界面卡死。试了 ...

你不会是join 了把

zhangmi008 发表于 2024-7-12 11:20

xmwzx123 发表于 2024-7-10 15:23
你不会是join 了把

是的,可能问题出在这儿,我再试试,谢谢
页: [1] 2
查看完整版本: tkinter Treeview组件排序