目录
使用selection_set()方法设置新选择的item/items
使用selection_remove()把指定的item从选择中移除
使用table.tag_has()/table.tag_configure()/table.tag_bind()
使用index()方法返回item在items列表中的整数索引
使用identify()/identify_row()/identify_column()/identify_region()/identify_element()方法返回指定组件的描述)
一、前言
TreeView是它是用来展示树形结构或列表结构的一个UI控件;第一列用来表示树状结构,除第一列外后面几列的是列表结构
二、TreeView的引入
import tkinter.ttk as ttk
三、TreeView的属性
属性 | 描述 |
master | 父布局 必要 |
columns | columns 值为一个列表,列表里每个元素代表一个列标识符的名称 必要 例:columns=['序号', '权限', '用户', '密码'] |
displaycolumns | 列标识符列表(符号索引或整数索引),指定显示哪些数据列以及它们出现的顺序,或者字符串“#all” 例:定义了上面的列之后 使用 displaycolumns=[2, 3, 1] 显示的列和顺序是: 用户 密码 权限 |
height | 可见的行数,显示几行数据 (若实际数据少于设置的行数,则按实际数据显示) |
padding | 内部填充,填充是一个最多包含四个长度列表(左,上,右,下) 例:padding=[20,10,20,10] 左边填充:20 上面填充:20 右边填充:20 下面填充:20 例:padding=[50]上下左右各填充:50 |
selectmode | “extended”(默认值)可以选择多个(行)项目(用Ctrl+鼠标) “browse”每次只会选中一行。 “none”不更改选择 例:selectmode=“extended” |
show | "tree headings"表示显示所有列,默认值(列表模式) “tree”表示仅显示第一列(树模式) “headings”表示显示除一列的其他列(列表模式) 注意:‘#0’(第一列)是永远存在的 例: show="headings" |
style | TreeView的样式 |
xscrollcommand | X轴滚动条的绑定 |
yscrollcommand | Y轴滚动条的绑定 |
四、TreeView的item选项
属性 | 描述 | ||||||||||
text | 显示的文本标签 | ||||||||||
image | 显示在item左侧的Tk Image | ||||||||||
values | 与该item相关联的值的列表,每个item应该具有与列数相同数量的值 如果值少于列数,则假定其余值为空。如果值多于列数,则忽略额外的值 |
||||||||||
open | True 显示item False 隐藏item |
||||||||||
tags | 与此item相关联的标签列表
|
五、列标识符
表格创建好后就可以操作表格通过列标识
列标识符采用以下3种形式 |
1. 创建表格时列名称列表中的符号名称 例: ['序号', '权限', '用户', '密码'] 列表 或 ('序号', '权限', '用户', '密码') 元组 |
2. 整数n,指定第n个数据列 例: [1, 2, 3, 4] 列表 或 (1, 2, 3, 4) 元组 |
3. 形式为#n的字符串,其中n为整数,指定显示的第n列 例: ["#1", "#2", "#3", "#4"] 列表 或 ("#1", "#2", "#3", "#4") 元组 |
item的值的显示顺序可能与它们存储的顺序不同
列#0总是指向树列,即使没有指定show= " tree "(单树模式)。
列号是item值列表的索引,树标签显示在第0列中。如果选项displaycolumns没有设置,那么数据列n将显示在列#n+1中;列#0总是指向树列。
六、TreeView触发事件
事件 | 描述 |
<<TreeviewSelect>> | 当选择更改时发生 |
<<TreeviewOpen>> | item的open=True时发生 |
<<TreeviewClose>> | item的open=False时发生 |
可用 Treeview.focus() 和 Treeview.selection() 可获取 item 或 items
七、TreeView点击事件
事件 | 代码 |
鼠标左键单击按下 | 1/Button-1/ButtonPress-1 |
鼠标左键单击松开 | ButtonRelease-1 |
鼠标右键单击 | 3 |
鼠标左键双击 | Double-1/Double-Button-1 |
鼠标右键双击 | Double-3 |
鼠标滚轮单击 | 2 |
鼠标滚轮双击 | Double-2 |
鼠标移动 | B1-Motion |
鼠标移动到区域 | Enter |
鼠标离开区域 | Leave |
获得键盘焦点 | FocusIn |
失去键盘焦点 | FocusOut |
键盘事件 | Key |
回车键 | Return |
控件尺寸变化 | Configure |
八、TreeView中常用的方法
方法 | 描述及返回值 | ||||||||||||
heading (column, option=None, **kw) |
查询或设定指定列的标题选项。 如果指定了选项,则返回该选项的值。 否则,将选项设置为相应的值
|
||||||||||||
column (column, option=None, **kw) |
查询或设定指定列的选项 column是列标识符 如果指定了选项,则返回该选项的值 否则,将选项设置为相应的值
|
||||||||||||
get_children (item=None) |
返回属于item的子元素列表 如果item未指定,则返回根目录的item |
||||||||||||
set_children (item, *newchildren) |
用newchildren替换item的子元素 不指定newchildren会导致分离item的子元素 一般用于树形结构中 |
||||||||||||
delete (*items) |
删除所有指定items及其所有子item 根item目不能被删除 |
||||||||||||
detach (*items) |
在树中断开(隐藏)items及子item 重新显示可以move()方法 |
||||||||||||
move (item, parent, index) |
将item移动到parent下的列表中的index位置 如果大于或等于子节点的数量,则将其移动到最后 如果项目被分离,它将被重新添加 |
||||||||||||
exists (item) |
如果树中存在指定的item,则返回True | ||||||||||||
focus (item=None) |
如果指定了item,则将焦点项设置为item 否则,返回当前的焦点项 若无则返回空值 使用focus()方法并不会让获得focus的item被高亮显示 如果要高亮显示使用selection_set()方法 |
||||||||||||
bbox (item, column=None) |
返回指定item的边界框(x, y, width, height) 如果指定了column,则返回该单元格的边界框 如果项目是不可见的(例如它是一个关闭item的子代或滚动出屏幕),返回一个空字符串 |
||||||||||||
identify (component, x, y) |
在x和y给出的点下返回指定组件的描述,如果在该位置没有这样的组件,则返回空字符串
|
||||||||||||
identify_row (y) |
返回位置为y的item的ID | ||||||||||||
identify_column (x) |
返回位置x的单元格的数据列标识符 树列的ID为#0 |
||||||||||||
Tk 8.6. |
返回一个
|
||||||||||||
Tk 8.6. |
返回位置为x, y的元素 | ||||||||||||
index (item) |
返回子item在父items的列表中的i整数索引 | ||||||||||||
insert (parent, index, iid=None, **kw) |
创建新item并返回新创建item的标识符 parent是父item的ID,若为空字符串则用于创建新根item串 Index是一个整数,或“end”,指定在父item列表中插入新item的位置 如果index小于或等于0,则在开始处插入新节点;如果index大于或等于当前子节点的数量,则将其插入到末尾 iid它被用作item标识符;Iid不能已经存在于树中。否则,将生成一个新的惟一标识符,不指定可自动生成 **kw有关可用列表,请参阅上面TreeView的item选项 |
||||||||||||
item (item, option=None, **kw) |
查询或修改指定item的选项 如果指定了选项,则返回该选项的值 否则,将选项设置为kw给出的相应值 |
||||||||||||
next (item) |
返回下一个与item同级的item的标识符 | ||||||||||||
parent (item) |
返回item的父元素的ID | ||||||||||||
prev (item) |
返回item的前一个同级的标识符 | ||||||||||||
reattach (item, parent, index) |
Treeview.move()的别名 | ||||||||||||
see (item) |
设置item是可见的。 将item的所有祖先open选项设置为True,并在必要时滚动Treeview,以便item位于树的可见部分中 |
||||||||||||
selection (selop=None, items=None) |
如果未指定selop,则返回选中的item,列表形式 否则,将按照以下选择方法进行操作 |
||||||||||||
selection_set (*items) |
Items成为新的选择 在3.6版更改,项可以作为单独的参数传递,而不只是 |