------------★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自动化办公 编程工具