学习笔记(57):Python实战编程-Treeview

立即学习:https://edu.csdn.net/course/play/19711/343120?utm_source=blogtoedu

1.树状结构Treeview:分为树状折叠式列表和列表显示,是一种很重要数据列表展示的形式

 

2.树状列表建立步骤:

1)创建一个树状列表:在这里可以设置显示的窗体和列的名称

        self.treeview = tkinter.ttk.Treeview(self.root,#树状结构需要显示的窗体columns = ("mid","name"),#设置树状列表中列的名称,将所有列名称用一个元组表示)

2)设置列表中的列的标题

self.treeview.heading(column = "mid",text = "编号")

3)设置列表中列的布局

self.treeview.column("mid",width = 100,anchor = "w")

4)向列表中插入父级数据

        self.level_a = self.treeview.insert(parent = "",#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加text = "第一个父级数据",#设置一条数据的标题,可以理解为是行标题values = ("父级1列1","父级1列2") #为每一条数据中对应的列设置相应的值,用元组表示)

5)在父级数据下插入子级数据

        self.level_a1 = self.treeview.insert(parent = self.level_a,#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加text = "第一条子级数据",#设置一条数据的标题,可以理解为是行标题values = ("父1子1列1","父1子1列2") #为每一条数据中对应的列设置相应的值,用元组表示)

6)树状结构列表的显示

self.treeview.pack(anchor = "w",fill = "x")#树状列表的显示,并且使其在x轴方向进行填充

 

3.其他的用法

1)树状结构列表事件的绑定

self.treeview.bind("<Double-Button-1>",self.treeview_handle)

2)事件的定义(包含如何获得列表数据)

    def treeview_handle(self,event):for index in self.treeview.selection():#获得选中项的索引,返回一个列表或者元组,因此相应for循环取出values= self.treeview.item(index,"values")#根据索引获得索引项的数据,数据是以一个元组的形式返回,包含一条信息info = "编号:%s、职位:%s"%valuestkinter.messagebox.showinfo(title = "您选中的列表信息",#设置弹出窗口的标题message = info#设置在弹出窗体需要弹出的信息)

 

4.完整代码

1)树状折叠列表

import tkinter#导入创建窗体的相关模块
import os
import tkinter.ttkimage_path = r'C:\Users\jinlin\Desktop\python_further_study\GUI编程\resources'  + os.sep + 'linlianqin.gif'#因为每个平台的分隔符不一样,所以用os.sep可以自动切换到相应平台的分隔符class Mainwindow():#创建窗口类def __init__(self):self.root = tkinter.Tk()#创建主体窗口self.root.title('linlianqin')#定义窗体的名字self.root.geometry('500x600')#定义窗体的初始大小self.root.maxsize(1200,1200)#设置窗口可以显示的最大尺寸self.tree()#树结构显示self.root.mainloop()#显示窗口,这个代码一定要放在所有窗口设置的后面#-----------------创建树状列表-----------------------def tree(self):# -----------------创建树状列表-----------------------self.treeview = tkinter.ttk.Treeview(self.root,#树状结构需要显示的窗体columns = ("mid","name"),#设置树状列表中列的名称,将所有列名称用一个元组表示)# ----------------为列表中指定名称的列设置列的标题----------------self.treeview.heading(column = "mid",text = "编号")self.treeview.heading(column = "name",text = "职位")# ---------------------为列表中指定名称的列进行布局设置------------------self.treeview.column("mid",width = 100,anchor = "w")self.treeview.column("name",width = 100,anchor = "w")#为列表中指定名称的列进行布局设置#-----------------------为列表插入数据,.一行表示一条插入的数据---------------------self.level_a = self.treeview.insert(parent = "",#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加text = "第一个父级数据",#设置一条数据的标题,可以理解为是行标题values = ("父级1列1","父级1列2") #为每一条数据中对应的列设置相应的值,用元组表示)self.level_b = self.treeview.insert(parent = "",#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加text = "第二个父级数据",#设置一条数据的标题,可以理解为是行标题values = ("父级2列1","父级2列2") #为每一条数据中对应的列设置相应的值,用元组表示)self.level_c = self.treeview.insert(parent = "",#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加text = "第三个父级数据",#设置一条数据的标题,可以理解为是行标题values = ("父级3列1","父级3列2") #为每一条数据中对应的列设置相应的值,用元组表示)#----------------为父级数据添加子类数据----------------------self.level_a1 = self.treeview.insert(parent = self.level_a,#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加text = "第一条子级数据",#设置一条数据的标题,可以理解为是行标题values = ("父1子1列1","父1子1列2") #为每一条数据中对应的列设置相应的值,用元组表示)self.level_a11 = self.treeview.insert(parent = self.level_a1,#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加text = "第一条孙级数据",#设置一条数据的标题,可以理解为是行标题values = ("父1子1孙1列1","父1子1孙1列2") #为每一条数据中对应的列设置相应的值,用元组表示)self.level_a11 = self.treeview.insert(parent = self.level_a1,#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加text = "第二条孙级数据",#设置一条数据的标题,可以理解为是行标题values = ("父1子1孙2列1","父1子1孙2列2") #为每一条数据中对应的列设置相应的值,用元组表示)self.level_a2 = self.treeview.insert(parent = self.level_a,#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加text = "第二条子级数据",#设置一条数据的标题,可以理解为是行标题values = ("父1子2列1","父1子2列2") #为每一条数据中对应的列设置相应的值,用元组表示)self.level_b1 = self.treeview.insert(parent = self.level_b,#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加text = "第一条子级数据",#设置一条数据的标题,可以理解为是行标题values = ("父2子1列1","父2子2列2") #为每一条数据中对应的列设置相应的值,用元组表示)self.treeview.pack(anchor = "w",fill = "x")#树状列表的显示,并且使其在x轴方向进行填充if __name__ == '__main__':Mainwindow()#将窗体类实例化

2)树状非折叠列表

import tkinter#导入创建窗体的相关模块
import os
import tkinter.ttk
import tkinter.messageboximage_path = r'C:\Users\jinlin\Desktop\python_further_study\GUI编程\resources'  + os.sep + 'linlianqin.gif'#因为每个平台的分隔符不一样,所以用os.sep可以自动切换到相应平台的分隔符class Mainwindow():#创建窗口类def __init__(self):self.root = tkinter.Tk()#创建主体窗口self.root.title('linlianqin')#定义窗体的名字self.root.geometry('500x600')#定义窗体的初始大小self.root.maxsize(1200,1200)#设置窗口可以显示的最大尺寸self.tree()#树结构显示self.root.mainloop()#显示窗口,这个代码一定要放在所有窗口设置的后面#-----------------创建树状列表-----------------------def tree(self):# -----------------创建树状列表-----------------------self.treeview = tkinter.ttk.Treeview(self.root,#树状结构需要显示的窗体columns = ("mid","name"),#设置树状列表中列的名称,将所有列名称用一个元组表示show = "headings"#将有标题的列顶格显示,即不会显示行标题)# ----------------为列表中指定名称的列设置列的标题----------------self.treeview.heading(column = "mid",text = "编号")self.treeview.heading(column = "name",text = "职位")# ---------------------为列表中指定名称的列进行布局设置------------------self.treeview.column("mid",width = 100,anchor = "w")self.treeview.column("name",width = 100,anchor = "w")#为列表中指定名称的列进行布局设置#-----------------------为列表插入数据,.一行表示一条插入的数据---------------------self.level_a = self.treeview.insert(parent = "",#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加# text = "第一个父级数据",#设置一条数据的标题,可以理解为是行标题values = ("父级1列1","父级1列2") #为每一条数据中对应的列设置相应的值,用元组表示)self.level_b = self.treeview.insert(parent = "",#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加# text = "第二个父级数据",#设置一条数据的标题,可以理解为是行标题values = ("父级2列1","父级2列2") #为每一条数据中对应的列设置相应的值,用元组表示)self.level_c = self.treeview.insert(parent = "",#指定父级数据index = "end",#设置添加的位置,这里设置的是在当前数据的后面进行添加text = "第三个父级数据",#设置一条数据的标题,可以理解为是行标题values = ("父级3列1","父级3列2") #为每一条数据中对应的列设置相应的值,用元组表示)#---------------------为树状列表绑定事件-----------------------------------self.treeview.bind("<Double-Button-1>",self.treeview_handle)self.treeview.pack(anchor = "w",fill = "x")#树状列表的显示,并且使其在x轴方向进行填充#---------------------定义树状列表相应处理的事件-------------------------def treeview_handle(self,event):for index in self.treeview.selection():#获得选中项的索引,返回一个列表或者元组,因此相应for循环取出values= self.treeview.item(index,"values")#根据索引获得索引项的数据,数据是以一个元组的形式返回,包含一条信息info = "编号:%s、职位:%s"%valuestkinter.messagebox.showinfo(title = "您选中的列表信息",#设置弹出窗口的标题message = info#设置在弹出窗体需要弹出的信息)if __name__ == '__main__':Mainwindow()#将窗体类实例化

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

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

相关文章

ios 常用操作-1

项目中可能会用到的一些技巧方法&#xff0c;做个记录&#xff0c;已被不时之需。 一。程序在运行过程中不锁屏&#xff1f; [UIApplication sharedApplication].idleTimerDisabledYES; 二。显示被view 或 control遮盖的背景内容。比如有时在不同的ios版本上 tableview cell上画…

(视觉和激光传感器)SLAM 做室内GPS与室外真实GPS在无人机上的对比

1、室外无人机GPS的作用 1&#xff09;记录实时无人机起飞点与当前飞行无人机的绝对位置关系&#xff0c;显示当面无人机离起飞点的真实距离 2&#xff09;做室外无人机悬停的功能&#xff0c;使用GPS当前点与悬停点GPS经纬度做对比 3&#xff09;无人机上层应用&#xff0c…

C# 连接 Oracle 的几种方式

C# 连接 Oracle 的几种方式 一&#xff1a;通过System.Data.OracleClient(需要安装Oracle客户端并配置tnsnames.ora)1. 添加命名空间System.Data.OracleClient引用2. using System.Data.OracleClient;3. string connString "User IDIFSAPP;PasswordIFSAPP;Data SourceRAC…

验证VSPHERE5 支持大于2TB磁盘

VSPHERE5 使用GTP格式的分区表&#xff0c;文件系统类型为VMFS5.X&#xff0c;直接支持大于2TB的磁盘分区&#xff0c;相对于VSPHERE4不同 vsphere4使用MSDOS格式的分区表&#xff0c;文件系统类型为VMFS3.X 而vsphere5 block块大小统一为1MB&#xff0c;而不是vsphere4的多种格…

学习笔记(58):Python实战编程-Combobox

立即学习:https://edu.csdn.net/course/play/19711/343121?utm_sourceblogtoedu 1.下拉列表Combobox:与Listbox相比&#xff0c;下拉列表是一次只是显示一项内容&#xff0c;适用于布局紧张的情况下&#xff0c;而Listbox则是将所有的内容铺开来展示 2.关键代码 1&#xff09…

Java Inner Class 内部类

内部类 Inner Class 一个内部类可以定义在另一个类里&#xff0c;可以定义在函数里&#xff0c;甚至可以作为一个表达式的一部分。 Java中的内部类共分为四种&#xff1a; 静态内部类static inner class (also called nested class) 成员内部类member inner class 局部内部类l…

SLAM系统工程,常用数据集下载链接(TUM KITTI DSO Mono EuRoC)

TUM 链接&#xff1a;https://pan.baidu.com/s/1nwXtGqH 密码&#xff1a;lsgr KITTI 链接&#xff1a;https://pan.baidu.com/s/1htFmXDE 密码&#xff1a;uu20 DSO 链接&#xff1a;https://pan.baidu.com/s/1eSRmeZK 密码&#xff1a;6x5b Mono 链接&#xff1a;http…

uva1331三角剖分

题意&#xff1a;输入一个简单m&#xff08;2<m<50)边形&#xff0c;找到一个最大三角形最小的三角剖分&#xff08;用不相交的对角线把一个多边形分成若干个三角形&#xff09;。输出最大的三角形面积。 分析&#xff1a;每条对角线都是无序的&#xff0c;因此&#xff…

Halcon算子翻译——default

名称 default - switch段中的备用分支。 用法 default( : : : ) 描述 default在switch段中开放备用分支。 如果switch语句的控制表达式的计算结果不匹配前面的case语句的任何整数常量&#xff0c;则访问该分支。 结果 default&#xff08;作为算子&#xff09;总是返回2&#x…

现代制造工程笔记01:课程安排

电子教材&#xff1a;http://www.bookask.com/read/4588.html

(转).gitignore详解

本文转自http://sentsin.com/web/666.html 今天讲讲Git中非常重要的一个文件——.gitignore。 首先要强调一点&#xff0c;这个文件的完整文件名就是“.gitignore”&#xff0c;注意最前面有个“.”。这样没有扩展名的文件在Windows下不太好创建&#xff0c;这里给出win7的创建…

Effective Java 英文 第二版 读书笔记 Item 14:In public classes,use accessor methods,not public fields...

本章主要分析 公开属性与私有属性提供公开get、set方法两种方式对比 // Degenerate classes like this should not be public! class Point { public double x; public double y; } // Public class with exposed immutable fields - questionable public final class Time { …

22个值得收藏的android开源码-UI篇

本文介绍了android开发人员中比較热门的开源码&#xff0c;这些代码绝大多数能够直接应用到项目中。FileBrowserView 一个强大的文件选择控件。界面比較美丽&#xff0c;使用也非常easy。 特点&#xff1a;能够自己定义UI&#xff1b;支持复制、剪切、删除、移动文件&#xff1…

现代制造工程02:第一部分——刀具(含2个易考点)

一、金属切削原理 可以看出哪些性能参数是同向性得&#xff0c;并且知道性能参数与三要素有什么关系 易考点&#xff1a;三个变形区 易考点&#xff1a;磨损种类以及磨损阶段、磨顿标准

Fortran向C传递NULL值

在很多C或C的头文件定义中&#xff0c;NULL被指定定义为0&#xff0c;这里不再具体展开 gfortran的手册关于iso c binding的章节&#xff0c;定义NULL如下 Moreover, the following two named constants are defined: NameType C_NULL_PTRC_PTRC_NULL_FUNPTRC_FUNPTRBoth are e…

视觉slam重点知识笔记

1、除了基本矩阵和本质矩阵&#xff0c;我们还有一种称为单应矩阵&#xff08;Homography&#xff09;H 的东西&#xff0c;它 描述了两个平面之间的映射关系。若场景中的特征点都落在同一平面上&#xff08;比如墙&#xff0c;地面等&#xff09;&#xff0c;则可以通过单应性…

iOS开发之share第三方登录以及分享

&#xff08;1&#xff09;官方下载ShareSDK iOS 2.8.8&#xff0c;地址&#xff1a;http://sharesdk.cn/ &#xff08;2&#xff09;根据实际情况&#xff0c;引入相关的库&#xff0c;参考官方文档。 &#xff08;3&#xff09;在项目的AppDelegate中一般情况下有三个操作&am…

Linux磁盘的划分

磁盘的组成&#xff1a; 磁道&#xff1a;track 扇区&#xff1a;sector (512字节) 磁头&#xff1a;head 柱面&#xff1a;cylinder MBR/msdos 分区模式 1--4个主分区&#xff0c;或者0--3个主分区加1个扩展分区&#xff08;n个逻辑分区&#xff09; 最大支持容量为2.2TB的磁…

opencv的pnp()算法接口是相对于3D点,输出的是相机与3D点之间的R和T

1、情况一&#xff1a; 两帧图像 -》 提取特征-》特征匹配-》通过2d-2d计算 F基础矩阵、E 本质矩阵 、H 单一性矩阵 -》解析出 相机自身的运动R和T -》再通过三角化&#xff0c;将2d点转为相机的3d点&#xff08;每个空间点在两个相机坐标系下的投影3D坐标与像素2D坐标&#…