吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 785|回复: 10
收起左侧

[Python 原创] tkinter Treeview组件排序

[复制链接]
Eks6666 发表于 2024-7-3 23:32
[Python] 纯文本查看 复制代码
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[0][0])
    # 1.处理数据里面的单位
    if '元' in l[0][0]:
        # 如果第一行的数据里存在 '元' 的文本
        l.sort(key=lambda t: int(t[0].replace('元', '')), reverse=reverse)  # 把单位去除后转数字再排序
    else:
        try:
            # 优先尝试数字排序
            l.sort(key=lambda t: int(t[0]), 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[column], anchor='center')
    # 设置列酷安,anchor 为锚点,'center' 表示中央居中
    # 也可以用方位词东南西北的英文缩写表示,即 N(North, 北): 上中对齐、SW(South West, 西南):左下对齐
    # tree.column(column, width=columns[column], 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 = [
    [1, '李白', '男', '18', '8000元', '唐'],
    [2, '杜甫', '男', '16', '5000元', '唐'],
    [3, '苏轼', '男', '26', '7000元', '宋'],
    [4, '李清照', '女', '15', '8000元', '宋'],
    [5, '辛弃疾', '男', '27', '8000元', '宋'],
    [6, '岳飞', '男', '30', '9000元', '宋'],
    [7, '纳兰性德', '男', '20', '7000元', '清'],
]
# 遍历导入数据
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()

免费评分

参与人数 2吾爱币 +8 热心值 +2 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
随遇而安8 + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lth123lth123 发表于 2024-7-4 02:20
谢谢分享 爱你宝贝
 楼主| Eks6666 发表于 2024-7-4 09:56
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 了把

是的,可能问题出在这儿,我再试试,谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 08:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表