Tkinter教程22:DataFrame数据加入到treeview树视图(含横纵滚动条+正反排序)

------------★Tkinter系列教程★------------

Tkinter教程21:Listbox列表框+OptionMenu选项菜单+Combobox下拉列表框控件的使用+绑定事件

Tkinter教程20:treeview树视图组件,表格数据的插入与表头排序

Python教程57:tkinter中如何执行,单击按钮的单线程操作

Python教程56:tkinter中如何隐藏/去掉最大化窗口

Python项目10:使用Tkinter批量新建文件夹

Python源码04:使用Tkinter写一个计时器

教你使用Pyinstaller将Python源码打包成可执行程序exe的方法

经典游戏04:给老板写一封拒绝不了的辞职信

Python源码03:使用Tkinter写一个诗词答题软件

Python源码:Tkinter窗口中输入框和菜单组件的使用

Python源码02:使用Tkinter制作软件的登入页面

Python源码:Tkinter组件布局管理的3种方式

Python源码:关于Tkinter需要学习的知识点

Python源码01:使用Tkinter写一个计算器

Python中常用的GUI模块库有哪些?

Python源码:教你用Tkinter创建一个简单的桌面窗口程序

1.今天要掌握的主要内容

DataFrame数据加入到treeview树视图,列表框控件中

列表框可以自定义列宽的长度(字典数据的应用)

做一个带滚动条的列表(可以左右,上下随数据移动)

支持列表框的正向与反向排序
在这里插入图片描述

# -*- coding: utf-8 -*-
# @Author : 小红牛
# 微信公众号:WdPython
import tkinter as tk
from tkinter import ttk
import pandas as pd# 1.创建一个简单的DataFrame
data = {'诗人': ['李白', '苏轼', '李清照', '杜甫', '岳飞'],'性别': ['男', '男', '女', '男', '男'],'芳龄': [18, 26, 13, 15, 28],'朝代': ['唐', '北宋', '宋', '唐', '南宋'],'薪资': [9000, 7000, 8000, 5000, 7000]}df = pd.DataFrame(data)
print('1.DataFrame原始数据'.center(50, '-'))
print(df)
# 2.创建主窗口
root = tk.Tk()
root.title("Treeview with DataFrame")
root.geometry('450x300')  # 窗口的宽度和高度# 3.1.列表框数字+文本排序
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))# 3.2.df数据放到列表框
def dataframe_to_treeview(dfs, x1, y1, w, h, column_name='序号'):# 1.获取数据的列标题a = dfs.columns.values.tolist()a.insert(0, column_name)# 添加一个宽度列表,组成字典b = [80 for nums in range(len(a) - 1)]# [50, 80, 80, 80, 80, 80]b.insert(0, 50)df_titles = dict(zip(a, b))# print(df_titles)# 2.设置纵向滚动条xbar = tk.Scrollbar(root, orient='horizontal')xbar.place(x=x1, y=y1+h-3, width=w)ybar = tk.Scrollbar(root, orient='vertical')ybar.place(x=x1+w-3, y=y1, height=h)# 3.创建Treeviewtree = ttk.Treeview(root, show='headings',xscrollcommand = xbar.set,yscrollcommand = ybar.set)tree['columns'] = list(df_titles)# 批量设置列属性for title in df_titles:# 加载列标题tree.heading(title, text=title)tree.column(title, width=df_titles[title], anchor='center')# 3.设置点击执行排序操作tree.heading(title, command=lambda _col=title: treeview_sort(tree, _col, False))# 遍历DataFrame的每一行,并将它们添加到Treeview中for index, row in dfs.iterrows():datas = row.tolist()datas.insert(0, index)# print(datas)# 添加行数据tree.insert('', 'end', text='', values=datas)# 将Treeview添加到主窗口tree.place(x=x1, y=y1, width=w, height=h)xbar.config(command=tree.xview)ybar.config(command=tree.yview)# 创建两个表格
dataframe_to_treeview(df, 0, 20, 400, 100)
dataframe_to_treeview(df, 0, 170, 400, 100)
# 运行主循环
root.mainloop()

完毕!!感谢您的收看

----------★★历史博文集合★★----------
我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/463364.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刘谦魔术我用代码还原了,魔术尽头是数学,数学尽头是神学!

刘谦在春晚让两个半张扑克牌合在一起的时候,我就知道其中必然有数学的奥妙。 假设我们初始卡牌为1,2,3,4。对半撕开后我们定义扑克牌为: 1(1) 2(1) 3(1) 4(1) 1(2) 2(2) 3(2) 4(2)按照刘谦的魔术,你需要…

C语言之:编译和链接

目录 1. 翻译环境和运行环境翻译环境 2. 翻译环境:预编译编译汇编链接预处理(预编译)编译词法分析语法分析语义分析汇编链接运行环境 1. 翻译环境和运行环境 在ANSI C的任何一种实现中,存在两个不同的环境。 第一种是翻译环境&a…

常用的前端模块化标准总结

1、模块化标准出现以前使用的模块化方案: 1)文件划分: 将不同的模块定义在不同的文件中,然后使用时通过script标签引入这些文件 缺点: 模块变量相当于是定义在全局的,容易造成变量名冲突(即不…

分享76个表单按钮JS特效,总有一款适合您

分享76个表单按钮JS特效,总有一款适合您 76个表单按钮JS特效下载链接:https://pan.baidu.com/s/1CW9aoh23UIwj9zdJGNVb5w?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集…

[office] excel如何计算毛重和皮重的时间间隔 excel计算毛重和皮重时间间隔方法 #笔记#学习方法

excel如何计算毛重和皮重的时间间隔 excel计算毛重和皮重时间间隔方法 在日常工作中经常会到用excel,有时需要计算毛重和皮重的时间间隔,具体的计算方式是什么,一起来了解一下吧 在日常工作中经常会到用excel,在整理编辑过磅数据…

树莓派的pip安装时候添加清华源

每次都要去找镜像网址,太麻烦了,通过改配置可以一次性解决。 首先创建一个.pip 目录 mkdir ~/.pip意味着在当前目录下创建.pip文件,不过这个是隐藏文件,一般情况下是关闭隐藏文件的可视的,于是我绕了点弯弯。 编辑…

office 2021安装教程(官方自动批量激活,无付费)

全程不需要第三方软件,所有用到的工具都是微软官方的!!!!! 基于KMS的 GVLK:https://learn.microsoft.com/zh-cn/deployoffice/vlactivation/gvlks 首先我们需要去下载 office 软件部署工具&a…

Compose之Slider全面解析

JetPack Compose系列(14)—Slider Slider,即拖动条,默认包含了一个滑块和一个滑动轨道。允许用户在一个数值范围内进行选择。 按照惯例,先观察其构造函数: Composable fun Slider(value: Float,onValueCh…

ctfshow-命令执行(web73-web77)

web73 用不了上一题的通用poc了 因为禁用了strlen 但是可以改一个函数自定义一个函数只要是能实现strlen效果即可 cvar_export(scandir(/));exit(0); 根目录下有一个flagc.txt文件 cinclude(/flagc.txt);exit(0); web74 禁用了scandir函数 那就使用web72的glob协议 查看目录下…

「daily updating」k3s + openfaas serverless bench 踩坑指南持续更新中

OpenFaas从入门到实战 – 踩坑指南 | k3dOpenFaas | deploy your first python function https://blog.alexellis.io/first-faas-python-function/ https://docs.openfaas.com/deployment/kubernetes/ 搭建环境:第一种方法失败,第二种方法…

基于微信小程序的校园失物招领小程序

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

WWW 万维网

万维网概述 万维网 WWW (World Wide Web) 并非某种特殊的计算机网络。 万维网是一个大规模的、联机式的信息储藏所。 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。 这种访问方式称为“链接”。 万维网是分…