Python GUI tkinter ttk TreeView 详解

Treeview

这个部件功能非常强大。
首先它是树形图和列表相结合,在第一列是它的树状结构,后面几列的是列表结构;然后每行是一个item,树这边的item可以分级,每个item可以有子item,名称对应text标签,而列表这边的item关联到对应的树item,名称对应的是values标签,values是一个列表结构;item:item就是一行数据,一个item有5个标签吧,分别是text,image,values,open,tags,其实一个item就类似于字典结构;列标识符说一下,这个可以在声明Treeview时由columns定义好,可以是整形,字符,字符串等,也可以是整数,注意开始是0,代表第一列,还可以是‘#n’,就是整数前加个#。

options

声明这个部件有以下几个可选属性

选项 描述
columns 值是一个列表。列表里每个元素代表一个列标识符的名称。列表的长度为列的长度。
displaycolumns 列表,这里的元素是列表符,表示的是哪些列可以显示以及顺序,或者用‘#all’表示全部显示
height 表示要显示几行数据(注意:这个部件的宽度是根据列的多少自动定义的)
padding 填充,是个最多4个元素的列表
selectmode 定义如何去选择一行。"extended"是可选多行(用Ctrl+鼠标), “browse” 是只能选一行, “none"是不能改变选择,默认是"extended”
show 表示这个部件显示哪种功能,“tree”表示仅显示第一列(单树模式),“headings”表示显示除一列的其他列(单列表模式),默认是"tree headings",显示所有列。注意,‘#0’(第一列)是永远存在的

Item Options

每行的数据有以下几个可选属性

选项 描述
text 树状结构这边的名称。
image 树状结构这边的名称的左边加个图。
values 列表结构这边每一行的值,values未赋值的列会为空值,超过列的长度会被截断。
open 布尔值,代表子item的显示打开或关闭
tags 与item关联的标记

Tag Options

item里的tags对应的可选属性

选项 描述
foreground 前景色
background 背景色
font 字体
image

Virtual Events

bind里的可选事件
(由于转义问题直接用文字描述,<<里无空格>>)

<< TreeviewSelect>>,代表选择变化是发生;
<< TreeviewOpen>>,item的open=True时发生
<< TreeviewClose>>,item的open=False时发生

提示:可用 Treeview.focus() 和 Treeview.selection() 可获取 item 或 items.

方法

  • bbox(item, column=None)

返回一个item的范围(x,y,width, height),如果column指定了一个列,则返回一个元素范围,如果item不可视,则返回空值。

  • get_children(item=None)

返回一个item的所有子item,这个子item是一个列表形式,如果item没指定,则返回根目录的item

  • set_children(item, *newchildren)

设置一个item的新子item。这里设置了之后实际是全部替换

  • column(column, option=None, **kw)

给各列设置属性,或返回属性。
第一个column是列标识符
第二个option,如果不设置则返回所有属性的字典,如果设置则返回那个属性的值。
kw里的option有5个
id:只读属性,返回列名。
anchor:文字在cell里的对齐方式,标准的tk的anchor属性
minwidth: 值,单位是像素,列的最小宽度
stretch: 布尔值,表示列的宽度是否随整个部件的改动而变化。
width:列宽,单位是像素。
提示:如果要设置树状结构那列,用column=“#0”

  • delete(*items)

删除item及其子item

  • detach(*items)

断开item及其子item,这里的断开只是不显示,以后还可以链接起来。

  • exists(item)

返回True,如果item在树里。

  • focus(item=None)

如果不指定item,则返回当前获得焦点的item,如果指定item,则让该item获得焦点。若无则返回空值。

  • heading(column, option=None, **kw)

查询或修改指定列的标题选项
第一个column是列标识符
第二个option,如果不设置则返回所有属性的字典,如果设置则返回那个属性的值。
kw里的option有4个
text:列头名
image: 列头名右的图像
anchor:文字在heading里的对齐方式,标准的tk的anchor属性
command:点击列头的回调函数

  • insert(parent, index, iid=None, **kw)

创建新item并返回新创建item的项标识符。
parent:用item ID表示父item,或者‘’表示根item
index:数值int,或‘end’,表示item插入的位置
iid:item标识符,可自动生成
kw:看上面的Item Options介绍。

  • item(item, option=None, **kw)

查询或修改指定item的选项

  • selection(selop=None, items=None)

如果没指定selop则返回所有选中的items,列表形式,若selop指定了selection methods,则相应act。

  • set(item, column=None, value=None)

指定item,如果不设定column和value,则返回他们的字典,如果设定了column,则返回该column的value,如果value也设定了,则作相应更改。

最后写几句

其他还有一些不常用的方法就没写了。还有一点就是绑定Scrollbar时,Scrollbar的放置用pack最好,用grid的话横向的Scrollbar会在初始的时候不能拖动(显示不全时)。

你可能感兴趣的:(Python GUI tkinter ttk TreeView 详解)