Python tkinter-- 第22章 树形列表控件(Treeview)属性

第22章 树形列表控件(Treeview)
树形列表控件(Treeviw)实现了一种层次化的结构数据,用户可以用鼠标打开或者隐藏相应数据或者节点。Treeview是没有根节点的,每一层都可以有很多的节点。经典的使用场景有:
(1)表格
类似于其他语言的Grid控件,或者Excel表格。可以行列的形式展示数据。
(2)目录列表
实现文件目录的管理,可以展开或者折叠显示目录以及文件。
Treeview有关的概念:
(1)item
在Treeview中显示的每一个内容,都被定义为item,和Excel中cell的概念类似。每一个item可以有一个文字的内容或者图片内容,这些内容是最终展现在控件中的。
(2)iid
每一个item都有唯一的一个字符串标识iid。可以用户自己定义,也可以使用系统设定的值。需要注意的是,iid必须是唯一的,不可重复的。
(3)child
child其实也是item,不过它的含义是指定item的子项。比如item是一个目录,那么它的下面的文件以及子目录就是此item的child。通常在遍历整个Treeview控件的时候,child会被用到。
(4)parent
parent与child类似,不过是指定item的父控件。相当于父目录。
(5)ancestor
ancestor是指定item的从第一层节点到它的父节点的集合,也就是它的所有的上层节点的集合。
(6)visible
指定的item是否可见。比如在表格中,有些行或者列会被隐藏。不过第一层节点总是可见的。
(7)descendant
与ancestor类似,不过是指定item的从子节点一直到最后一层节点的集合。
(8)tag
item还可以有别名。不同的item可以有相同的别名。这样好处是可以给同样属性的item一起赋值。比如,目录名称用斜体表示,而文件名称用正常的字体显示。只有给所有的代表目录的item的tag赋值为’directory’,而代表文件的item的tag赋值为’file’,就可以很分别的实现上面的功能,而不需要为每一个item进行单独的赋值。
有的时候,tag可以与特定的事件绑定,可以使用一个回调函数处理相同的要求的所有item。

Treeview的第一层节点是特殊的节点,是有专门的用途的,一般不作为信息显示。比如,当Treeview当作表格使用时,第一层节点是表头,后面的节点才是表格的内容。

具体Treeview的用法请见22.3节的例子。
22.1 属性

属性 描述
class_ 定义Treeview控件的名字
column Treeview控件中,列的名字
cursor 鼠标经过Treeview控件的时候的形状
displaycolumns 定义Treeview控件列显示的次序
height Treeview控件的高度,以行为单位
padding 定义Treeview控件与边框之间的填充值
selectmode 定义鼠标点击之后的选择模式
show 定义表头的显示方式
style Treeview外观属性设置
state Treeview的状态
takefocus Treeview是否可以通过Tab键获得输入焦点

22.1.1 class_
定义Treeview控件的类的名称
22.1.2 column
给Treeview中的每一列赋值一个别名,方便内部使用。在把Treeview作为表格使用的时候,column的别名是调整列属性经常使用的,比如调整列宽、对齐方式等等。对于树形结构,’#0’用来表示打开/折叠的icon(图标)。详细的说明见22.3的举例。
22.1.3 cursor
鼠标经过Treeview的鼠标形状。
22.1.4 displaycolumns
定义那些列会显示以及显示的次序。displaycolumns参数是一个列表,列表中的数值可以是列的数字形式,也可以是column中定义的别名形式。

import tkinter as tk
from tkinter import ttk
 
root = tk.Tk()
root.geometry('320x240')
tk.Label(root,text='成绩表').pack()
area=('#','数学','语文','英语')
ac=('all','m','c','e')
dc=('all','c','m','e')
data=[('张三','90','88','95'),
      ('李四','100','92', '90'),
      ('王二','88','90', '91')
      ]

tv=ttk.Treeview(root,columns=ac,show='headings',
                height=7,displaycolumns=dc)
for i in range(4):
    tv.column(ac[i],width=70,anchor='e')
    tv.heading(ac[i],text=area[i])
tv.pack()
for i in range(3):
    tv.insert('','end',values=data[i])
root.mainloop()

结果:
Python tkinter-- 第22章 树形列表控件(Treeview)属性_第1张图片
Python tkinter-- 第22章 树形列表控件(Treeview)属性_第2张图片

说明:如果没有设置displaycolumns,显示列的次序是数学、语文、英语。设置了displaycolumns之后,显示列的次序变为语文、数学、英语。
22.1.5 height
定义Treeview的高度,单位是行。
22.1.6 padding
定义Treeview控件与边框之间的填充值。可以是单个数字,也可以是一个列表。具体的含义如下:

数值
a a a a a
(a,b) a b a b
(a,b,c) a c b b
(a,b,c,d) a b c d

22.1.7 selectmode
定义鼠标点击后的选择模式:

模式 含义
selectmode=‘browse’ 一次只能选中一行
selectmode=‘extended’ 可以选中多行。使用ctrl或者shift键+鼠标按键
selectmode=‘none’ 不可以选中

22.1.8 show
确定表头的显示方式。取值有’heading’或者’tree’。show=’tree’不会显示表头。
22.1.9 style
Treeview控件的外观设置,具体方法见第24章。
22.1.10 state
Treeview 的状态
22.1.11 takefocus
是否可以使用Tab键获得输入焦点

你可能感兴趣的:(Python,tkinter,Python,tkinter)