学习笔记(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,一经查实,立即删除!

相关文章

验证VSPHERE5 支持大于2TB磁盘

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

Java Inner Class 内部类

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

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

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

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

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

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

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

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…

有限元课堂笔记03:钢架(Frame)

1.平面钢架(Frame)&#xff1a;是桁架(Truss)和梁(Beam)的合成&#xff0c;两节点六自由度 2.空间钢架&#xff1a;两节点12自由度 相对于平面钢架来说每一个节点增加了z轴线性变形、绕x轴扭矩&#xff0c;绕y轴扭矩 刚度矩阵

Docker新手入门:基本用法

Docker新手入门&#xff1a;基本用法 1.Docker简介 1.1 第一本Docker书 工作中不断碰到Docker&#xff0c;今天终于算是正式开始学习了。在挑选系统学习Docker以及虚拟化技术的书籍时还碰到了不少麻烦&#xff0c;主要就是没有特别经典的书&#xff01;Docker的《第一版Docker书…

有限元笔记04:二维实体单元

1.二维实体即平面问题 创建单元的步骤&#xff1a; 型函数&#xff08;插值函数&#xff09;>>>应变矩阵>>>刚度矩阵>>>质量矩阵>>>力的分量 1&#xff09;三角形单元 2&#xff09;面坐标 3&#xff09;线性矩形单元 4)高斯积分 6)任意…

线程与内核对象的同步-2

等待定时器内核事件 CreateWaitableTimer( PSECURITY_ATTRIBUTES psa, BOOL fManualReset, PCTSTR pszName); 进程可以获得它自己的与进程相关的现有等待定时器的句柄。 HANDLE OpenWaitableTimer( DWORD dwDesiredAccess, BOOL bInheritHandle, PCTSTR pszName); 等待定时器对…

【Win10 应用开发】自定义应用标题栏

Win 10 app对窗口标题栏的自定义包括两个层面&#xff1a;一是只定义标题中各部分的颜色&#xff0c;如标题栏上文本的颜色、三个系统按钮&#xff08;最大化&#xff0c;最小化&#xff0c;关闭&#xff09;的背景颜色等&#xff1b;另一层是把窗口的可视区域直接扩展到标题栏…

学习笔记(59):Python实战编程-Graphics

立即学习:https://edu.csdn.net/course/play/19711/343123?utm_sourceblogtoedu 1.graphics&#xff1a;图形界面组件的绘制&#xff0c;利用的是坐标的定位来对各个组件进行相对地位置布局 2.graphics与thinkter的区别 1&#xff09;窗口的创建上&#xff1a; win graphics…

IIS6配置Asp.net MVC运行环境

Windows server 2003 IIS6 搭建Asp.net MVC运行环境 1、安装.Net Framework4.0。 下载地址&#xff1a; http://www.microsoft.com/zh-cn/download/details.aspx?id17718 2、安装WindowsServer2003-KB968930-x86-CHS.exe&#xff0c;PowerShell 2.0的补丁 下载地址&#xff1…

最优化课堂笔记04:非线性规划(考点4-5例题)

目录 4.1 多元函数的泰勒展开 4.2方向导数与梯度 4.2.1方向导数 n元函数在点沿特定方向的方向导数 4.2.2梯度 4.3二次函数及正定矩阵 4.4凸函数与凸规划 4.4.1凸函数 4.4.2凸规划 4.4无约束优化问题的极值条件 4.5约束优化问题的极值条件&#xff08;重点考点&#x…

orb-slam2在PC和ARM上运行

ORBSLAM2的编译与运行 环境&#xff1a;Ubuntu16.04 ORBSLAM2 &#xff08;1&#xff09;安装工具 sudo apt-get install cmake sudo apt-get install git sudo apt-get install gcc g (2) 安装pangolin 安装依赖项&#xff1a; sudo apt-get install libglew-dev sudo ap…

烂泥:智能DNS使用与配置

公司的业务现在已经扩展到海外&#xff0c;对外提供的统一接口都是通过域名来解析的&#xff0c;但是海外用户访问国内接口的话&#xff0c;你懂的&#xff0c;很慢的。为了提高域名解析的速度&#xff0c;打算使用智能DNS功能&#xff0c;来解决海外用户域名解析慢的问题。 PS…

现代制造工程——考试复习01

第一部分 金属切削原理 1.切削过程中工件上的加工表面分类 2.不同工艺的工件和刀具的相对关系 3.不同工艺的主运动和进给运动的方向 4.思考&#xff1a;主运动一般只有一个&#xff0c;但是进给运动一个也可以是多个 5.切削三要素&#xff08;必考&#xff09; 6.思考&#x…

最优化课堂笔记05——一维最优化方法(含重点:黄金分割法)

5-1 一维搜索区间的确定 搜索区间只是适用于单峰区间 、 例子 5.2 黄金分割法&#xff08;重点&#xff09; 上面的a与b都会跟着计算的推进而变化的 例子重点 5.3二次插值法 总结&#xff1a; 5.4 切线法&#xff08;牛顿法&#xff09; 5.5 割线法&#xff08;不需要计算导数&…