【Tkinter TreeView】

目录

一、前言

二、TreeView的引入

三、TreeView的属性

四、TreeView的item选项

五、列标识符

六、TreeView触发事件

七、TreeView点击事件

八、TreeView中常用的方法

九、TreeView实例

使用TreeView创建表格

使用get_children()方法

使用focus() 获取 item 

使用see()方法使item位于树的可见部分

使用selection_set()方法设置新选择的item/items

使用selection()方法获取item/items

使用selection_add()追加选择

使用selection_remove()把指定的item从选择中移除

使用set()方法返回或修改item值

使用table.tag_has()/table.tag_configure()/table.tag_bind()

使用next()/parent()/prev()方法

使用index()方法返回item在items列表中的整数索引

使用delete()方法删除第一行数据

使用detach()方法隐藏第一行数据

使用move()方法使隐藏第一行数据重新显示在第二行

使用exists()方法判断item是否存在

使用bbox()方法返回指定item的边界框

使用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相关联的标签列表
属性 描述
foreground 文本前景色
background 指定单元格或item的背景颜色
font 指定文本的字体
image 指定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(columnoption=None**kw)

查询或设定指定列的标题选项。
如果没有给出kw,则返回标题选项值的字典。

如果指定了选项,则返回该选项的值。

否则,将选项设置为相应的值

option
text 显示在列标题中的文本
image 要显示在列标题右侧的图像
anchor 指定标题文本的对齐方式
command 当按下标题标签时要调用的回调
column(columnoption=None**kw)

查询或设定指定列的选项

column是列标识符
如果没有给出kw,则返回列选项值的字典

如果指定了选项,则返回该选项的值

否则,将选项设置为相应的值

option
id 返回列名标识符;只读
anchor 指定列中的文本应如何相对于单元格对齐
minwidth 列的最小宽度,以像素为单位。
width 列的宽度,以像素为单位
stretch TreeView调整大小时是否调整列的宽度

get_children(item=None) 返回属于item的子元素列表
如果item未指定,则返回根目录的item
set_children(item*newchildren)

用newchildren替换item的子元素
在item出现而在newchildren中没有的子元素将从树中分离newchildren中的任何项都不能是item的祖先

不指定newchildren会导致分离item的子元素

一般用于树形结构中

delete(*items) 删除所有指定items及其所有子item
根item目不能被删除
detach(*items)

在树中断开(隐藏)items及子item

重新显示可以move()方法
根item无法分离

move(itemparentindex)

将item移动到parent下的列表中的index位置
如果index小于或等于0,item被移到开头;

如果大于或等于子节点的数量,则将其移动到最后

如果项目被分离,它将被重新添加

exists(item) 如果树中存在指定的item,则返回True
focus(item=None)

如果指定了item,则将焦点项设置为item

否则,返回当前的焦点项

若无则返回空值

使用focus()方法并不会让获得focus的item被高亮显示

如果要高亮显示使用selection_set()方法

bbox(itemcolumn=None)

返回指定item的边界框(x, y, width, height)

如果指定了column,则返回该单元格的边界框

如果项目是不可见的(例如它是一个关闭item的子代或滚动出屏幕),返回一个空字符串

identify(componentxy)

在x和y给出的点下返回指定组件的描述,如果在该位置没有这样的组件,则返回空字符串

component(部件)可选项目
region 区域
item 项目
column
row
element 要素

identify_row(y) 返回位置为y的item的ID
identify_column(x)

返回位置x的单元格的数据列标识符

树列的ID为#0

identify_region(xy)

Tk 8.6.

返回一个

heading 树标题区域
separator 两列标题之间的空格
tree 树的区域
cell 一个数据单元

identify_element(xy)

Tk 8.6.

返回位置为x, y的元素
index(item) 返回子item在父items的列表中的i整数索引
insert(parentindexiid=None**kw)

创建新item并返回新创建item的标识符

parent是父item的ID,若为空字符串则用于创建新根item串

Index是一个整数,或“end”,指定在父item列表中插入新item的位置

如果index小于或等于0,则在开始处插入新节点;如果index大于或等于当前子节点的数量,则将其插入到末尾

iid它被用作item标识符;Iid不能已经存在于树中。否则,将生成一个新的惟一标识符,不指定可自动生成

**kw有关可用列表,请参阅上面TreeView的item选项

item(itemoption=None**kw)

查询或修改指定item的选项
如果没有给出选项,则返回带有该项的选项/值的dict

如果指定了选项,则返回该选项的值

否则,将选项设置为kw给出的相应值

next(item) 返回下一个与item同级的item的标识符
parent(item) 返回item的父元素的ID
prev(item) 返回item的前一个同级的标识符
reattach(itemparentindex) Treeview.move()的别名
see(item) 设置item是可见的。
将item的所有祖先open选项设置为True,并在必要时滚动Treeview,以便item位于树的可见部分中
selection(selop=Noneitems=None)

如果未指定selop,则返回选中的item,列表形式

否则,将按照以下选择方法进行操作
3.6版后已移除,将在3.8版移除:使用selection()改变选择状态已弃用。请使用下面的选择方法

selection_set(*items)

Items成为新的选择

在3.6版更改,项可以作为单独的参数传递,而不只是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值