控件之ttk.Treeview表格、树状数据

2024-06-19 03:32

本文主要是介绍控件之ttk.Treeview表格、树状数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

from tkinter import *
from tkinter import ttk
root = Tk()
root.title('Treeview表格数据')columns=['1', '2', '3','4','5']
tree = ttk.Treeview(root, column=columns,height=20,show='headings')
tree.pack()tree.heading('1', text='学号')
tree.heading('2', text='姓名')
tree.heading('3', text='性别')
tree.heading('4', text='成绩')
tree.heading('5', text='名次')tree.column('1', width=100,anchor='center')
tree.column('2', width=100, anchor='center')
tree.column('3', width=100, anchor='center')
tree.column('4', width=100, anchor='center')
tree.column('5', width=100, anchor='center')Z = ['0001','赵一','男','658','1']
Q = ['0002','钱二','男','648','2']
S = ['0003','孙三','女','638','3']
L = ['0004','李四','女','628','4']number = ['001','002','003','004']
name = ['赵一','钱二','孙三','李四']
gender= ['男','男','女','女']
score = ['658','648','638','628']
rank = ['1','2','3','4']'''
函数语法
range(start, stop[, step])
参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
'''
for i in range(min(len(number), len(name), len(gender), len(name), len(name))):  # 写入数据tree.insert('', i, values=(number[i],name[i],gender[i],score[i],rank[i]))
'''
#排序部分1:
def treeviewrank(tv, col, reverse):  # Treeview、列名、排列方式l = [(tv.set(k, col), k) for k in tv.get_children('')]l.sort(reverse=reverse)  # 排序方式# rearrange items in sorted positionsfor index, (val, k) in enumerate(l):  # 根据排序后索引移动tv.move(k, '', index)tv.heading(col, command=lambda: treeviewrank(tv, col, not reverse))  # 重写标题,使之成为再点倒序的标题
'''def set_itemvalue(event):for item in tree.selection():item_text = tree.item(item, "values")print(item,item_text)#确定编辑的行、列column = tree.identify_column(event.x)  # 列row = tree.identify_row(event.y)  # 行print(column, row)cn = int(str(column).replace('#', '')) # 列rn = int(str(row).replace('I', '')) # 行print(cn, rn)#Entry创建摆放entryedit = Text(root, width=14, height=1)entryedit.place(x=0 + (cn - 1) * 100, y=6 + rn * 20)#treevview值=entry值def saveedit():tree.set(item, column=column, value=entryedit.get(0.0, "end"))entryedit.destroy()okb.destroy()#按钮创建摆放okb = Button(root, text='OK',command=saveedit)okb.place(x=90 + (cn - 1) * 100, y=3 + rn * 20)tree.bind('<Double-1>', set_itemvalue)def newrow():number.append('number')name.append('name')gender.append('gender')score.append('score')rank.append('rank')tree.insert('', len(number) - 1, values=(number[len(number) - 1], name[len(name) - 1],gender[len(gender) - 1], score[len(score) - 1], rank[len(rank) - 1]))tree.update()newb.place(x=200, y=(len(number) - 1) * 20 + 45)newb.update()newb = Button(root, text='新建', width=10, command=newrow)
newb.place(x=200, y=(len(number) - 1) * 20 + 45)
'''
#排序部分2:
for col in columns:  # 绑定函数,使表头可排序tree.heading(col, text=col, command=lambda _col=col: treeviewrank(tree, _col, False))
'''
def delcontent():items = tree.get_children()for item in items:tree.delete(item)Button(root,text='删除列表内容',command=delcontent).pack()def showcontent(event):for num in tree.selection():numname = tree.item(num, "values")from tkinter import messageboxmessagebox.showinfo(title=None,message=numname[1])tree.bind('<ButtonRelease-1>', showcontent)
'''附加1:
# 1.遍历表格
t = treeview.get_children()
for i in t:print(treeview.item(i,'values'))
# 2.绑定单击离开事件
def treeviewClick(event):  # 单击for item in tree.selection():item_text = tree.item(item, "values")print(item_text[0:2])  # 输出所选行的第一列的值
tree.bind('<ButtonRelease-1>', treeviewClick)  
'''tree1=ttk.Treeview(root)
tree1.pack()
#参数:parent, index, id=None, **kw (父节点,排序,id不能相同,显示出的文本)
subtree1=tree1.insert("",0,id="100",text='中国China',values=("1")) # ""表示父节点是根
tree1.insert(subtree1,0,id="101",text="中国北京",values=("3")) # text表示显示出的文本,values是隐藏的值
tree1.insert(subtree1,1,id="102",text="中国河北",values=("3"))
tree1.insert(subtree1,2,id="103",text="中国上海",values=("3"))
tree1.insert(subtree1,3,id="104",text="中国广州",values=("3"))
subtree2=tree1.insert("",1,id="200",text="美国USA",values=("4"))
tree1.insert(subtree2,0,id="201",text="美国加州",values=("5"))root.mainloop()

 

这篇关于控件之ttk.Treeview表格、树状数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073891

相关文章

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Python实现数据清洗的18种方法

《Python实现数据清洗的18种方法》本文主要介绍了Python实现数据清洗的18种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1. 去除字符串两边空格2. 转换数据类型3. 大小写转换4. 移除列表中的重复元素5. 快速统

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

在Pandas中进行数据重命名的方法示例

《在Pandas中进行数据重命名的方法示例》Pandas作为Python中最流行的数据处理库,提供了强大的数据操作功能,其中数据重命名是常见且基础的操作之一,本文将通过简洁明了的讲解和丰富的代码示例,... 目录一、引言二、Pandas rename方法简介三、列名重命名3.1 使用字典进行列名重命名3.编

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram