立即学习: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()#将窗体类实例化

学习笔记(57):Python实战编程-Treeview相关推荐

  1. 学习笔记(53):Python实战编程-Checkbutton

    立即学习:https://edu.csdn.net/course/play/19711/343116?utm_source=blogtoedu 复选框Checkbutton:与单选框是相对的,一些用法 ...

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

    立即学习:https://edu.csdn.net/course/play/19711/343121?utm_source=blogtoedu 1.下拉列表Combobox:与Listbox相比,下拉 ...

  3. 学习笔记(55):Python实战编程-Scrollbar

    立即学习:https://edu.csdn.net/course/play/19711/343118?utm_source=blogtoedu 1.滚动条ScrollBar: 当列表内容项的内容过多时 ...

  4. 学习笔记(54):Python实战编程-Scale

    立即学习:https://edu.csdn.net/course/play/19711/343117?utm_source=blogtoedu 1.滑块组件Scale: 用于定义一定范围的区间,如音量 ...

  5. 学习笔记(52):Python实战编程-Radiobutton

    立即学习:https://edu.csdn.net/course/play/19711/343115?utm_source=blogtoedu 单选钮:Radiobutton 1)相对于大部分组件而言 ...

  6. 学习笔记(51):Python实战编程-ListBox

    立即学习:https://edu.csdn.net/course/play/19711/343113?utm_source=blogtoedu listbox 知识点: 1)创建listbox: se ...

  7. 学习笔记(49):Python实战编程-place布局

    立即学习:https://edu.csdn.net/course/play/19711/343111?utm_source=blogtoedu 1.place布局: 1)最灵活的布局方式,是根据坐标点 ...

  8. 学习笔记(48):Python实战编程-grid布局

    立即学习:https://edu.csdn.net/course/play/19711/343110?utm_source=blogtoedu grid布局:根据表结构进行的布局,索引为0行0列开始, ...

  9. 学习笔记(47):Python实战编程-pack布局

    立即学习:https://edu.csdn.net/course/play/19711/343109?utm_source=blogtoedu pack布局: 1)最常用的布局,顺序排列布局方法 2) ...

最新文章

  1. Django搭建个人博客:渲染Markdown文章目录
  2. 贝叶斯多元Logistics回归理论基础
  3. Servlet程序自动加载
  4. javafx 内存占用_JavaFX:TouchGesture内存泄漏?
  5. linux在指定目录多个文件中搜索关键字
  6. mybatis学习(55):延迟加载
  7. LeetCode 1824. 最少侧跳次数(DP)
  8. Mac OS X 遭遇并抵御 ARP 攻击
  9. python读取csv文件中数据_python读取.csv文件中的数据
  10. oracle developer连接access
  11. 编程循迹小车传感器怎么定义_「老丁教乐高EV3基础编程」学完练完本课,足矣应付70%的编程要求...
  12. 3500 vocabulary
  13. 第三阶段应用层——1.4 数码相册—FreeType介绍
  14. Unity浏览器插件Embedded browser
  15. python实现模糊综合评判
  16. Vue2+filter实现权限管理,使不同用户进入不同界面
  17. 番茄花园版xp 和 东海公司xp 鲜为人知的安全漏洞
  18. 前序+中序 =〉后序
  19. CorelDRAW X7导出pdf发现部分有白边如何处理
  20. AntDesignVue表格中列的自定义隐藏与展示

热门文章

  1. TWRP-recovery中文界面安装方法[转]
  2. android apk如何入门
  3. RHEL7 USB installation problem and solving
  4. MapReduce编程实践
  5. MVVM模式下实现拖拽
  6. 原生Js_实现广告弹窗
  7. python3之time模块
  8. Linux:进程实例信息(/proc)
  9. 【SPOJ 694】Distinct Substrings (更直接的求法)
  10. react+redux+generation-modation脚手架搭建一个todolist