,,Python tkinter 树形列表控件(Treeview)的使用方法

,,Python tkinter 树形列表控件(Treeview)的使用方法

本文主要介绍Python tkinter树列表控件(Treeview)的使用方法,通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。需要的朋友可以和边肖一起学习。

:

目录

1.方法1.1 bbox(项目,列=无)

1.2栏(cid,选项=无,**kw)

1.3删除(项)

1.4分离(项目)

1.6焦点(项目=无)

1.7 get_children(item=None)

1.8标题(栏,选项=无,* *千瓦)

1.9识别(组件,x,y)

1.10识别_列(x)

1.11 identify_element(x,y)

1.12识别_区域(x,y)

1.13 identify_row(y)

1.14索引(项目)

1.15 set_children(项目,新子项)

1.16插入(父,索引,iid=无,**kw)

1.17项目(项目,选项=无,* *千瓦)

1.18移动(项目、父项、索引)

1.19下一步(项目)

1.20父项(项目)

1.21上一个(项目)

1.22参见(项目)

1.23选择(项目=无)

1.24选择集(项目)

1.25选择_删除(项目)

1.26选择_添加(项目)

1.27选择_切换(项目)

1.28集合(项目,列=无,值=无)

1.29 tag_bind( tagname,sequence=None,callback=None)

1.30 tag_configure( tagname,option=None,**kw)

1.31 tag_has(tagname,item=None)

1.方法

方法

形容

bbox(项目,列=无)

返回项目或单元格的框选范围。

列(cid,选项=无,**kw)

或者设置要查询的列的属性。

删除(*项)

删除指定的行或节点(包括子节点)

vde tach(*项目)

类似于delete,但不是实际删除,而是隐藏相关内容。您可以使用move方法重新显示v。

存在(项目)

确定指定的项是否存在。

焦点(项目=无)

获取选定项目的iid,或选中指定项目。

get_children(item=None)

返回指定项的子节点。

标题(栏,选项=无,* *千瓦)

或者设置查询标题行的配置参数。

识别(组件,x,y)

返回坐标(x,y)处的组件信息。包括:区域(标题、单元格等。)、项、列、行和元素。

identify_element(x,y)

返回(x,y)处的元素。

identify_region(x,y)

返回坐标(x,y)处的树视图组件

identify_row(y)

给定y坐标,返回指定的项索引。

索引(项目)

数字化项目索引,从0开始。

set_children(item,*newchildren)

将item的新子节点设置为newchildren,现有的子节点将被移除。一般用于树形结构。

插入(父,索引,iid=无,**kw)

插入新项目

项目(项目,选项=无,* *千瓦)

返回关于项目节点的信息。

移动(项目、父项、索引)

move()方法有两个功能:

(1)重新显示分离(重新连接)的项目

(2)将item指定的节点移动到parent的子节点,位置由index指定。

下一个(项目)

返回该项的下一个节点

父项(项目)

返回项目的父节点。

上一个(项目)

返回项目的上一个节点。

参见(项目)

确保item指定的节点在Treeview控件中可见。

选择(项目=无)

返回当前选定节点的iid

选择集(*项目)

选择由项目指定的节点。

选择_删除(*项目)

从当前选择中移除由项指定的节点。

选择_添加(*项目)

将items指定的节点添加到当前选择中。

选择_切换(*项目)

所选节点变为未选中状态,未选中的节点变为选中状态。

集合(项目,列=无,值=无)

或者设置为获取节点信息。

tag_bind(标记名,序列=无,回调=无)

分配给标记名的标记绑定事件和回调函数

tag_configure( tagname,option=None,**kw)

或者被配置成获得关于标签信息。

tag_has(tagname,item=None)

确定标签是否存在或者标签是否与那些节点相关联。

1.1 bbox(项目,列=无)

获取指定项的选取范围。如果指定的项目是可见的,返回值是一个四元组(x,y,w,h)。(x,y)是矩形框左上角的坐标,(w,h)是矩形的宽度和高度。这个四重设置的矩形正好可以框住指定的项目。如果column不为空,则返回指定单元格的框选范围。

坐标值基于Treeview控件,而不是窗口或屏幕。

将tkinter作为tk导入

从tkinter导入ttk

root=tk。Tk()

root.geometry('320x240 ')

Tk。Label(root,text=' report card ')。包装()

Area=('# ','数学','中文','英文')

ac=('所有',' m ',' c ',' e ')

Data=[('张三',' 90 ',' 88 ',' 95 '),

('李四','一百','九二','九零'),

(“王二”,“88”,“90”,“91”)

]

tv=ttk。Treeview(root,columns=ac,show='headings ',

高度=7,填充=(10,5,20,30))

对于范围(4)中的I:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的I:

tv.insert(',' end ',values=data[i])

def select(*args):

打印(tv.bbox(tv.selection()))

print(tv.bbox(tv.selection(),column='c '))

tv.bind('TreeviewSelect ',Select)

root.mainloop()

结果:

(11, 50, 280, 20)

(151, 50, 70, 20)

注意:输出结果有两个,一个是选中行的框选范围,一个是选中行第三个单元格的框选范围。

1.2栏(cid,选项=无,**kw)

或查询来修改指定列的配置。Cid可以是整数,也可以是列的别名。如果不输入选项,将返回当前配置选项字典。

树形视图列的选项有:

选择权

意义

对齐模式。这些值是北纬、东经、南纬、西经、东北、西北、东南、西南和中心。

身份证明(identification)

列的名称或标识。

最小宽度

调整列宽时,列的最小宽度不会小于该值。默认值为20

伸展

是否通过调整窗口大小来拉伸树形视图。默认值为True。

宽度

定义列宽。默认值为200

查询代码:

将tkinter作为tk导入

从tkinter导入ttk

root=tk。Tk()

root.geometry('320x240 ')

Tk。Label(root,text=' report card ')。包装()

Area=('# ','数学','中文','英文')

ac=('所有',' m ',' c ',' e ')

Data=[('张三',' 90 ',' 88 ',' 95 '),

('李四','一百','九二','九零'),

(“王二”,“88”,“90”,“91”)

]

tv=ttk。Treeview(root,columns=ac,show='headings ',

高度=7,填充=(10,5,20,30))

对于范围(4)中的I:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的I:

tv.insert(',' end ',values=data[i])

印刷(电视栏目(3))

root.mainloop()

结果:

{'width': 70,' minwidth': 20,' stretch': 1,' anchor': 'e ',' id': 'e'}

设置代码:

将tkinter作为tk导入

从tkinter导入ttk

root=tk。Tk()

root.geometry('320x240 ')

Tk。Label(root,text=' report card ')。包装()

Area=('# ','数学','中文','英文')

ac=('所有',' m ',' c ',' e ')

Data=[('张三',' 90 ',' 88 ',' 95 '),

('李四','一百','九二','九零'),

(“王二”,“88”,“90”,“91”)

]

tv=ttk。Treeview(root,columns=ac,show='headings ',

高度=5)

对于范围(4)中的我:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的我:

tv.insert(',' end ',values=data[i])

定义列():

电视栏(2,宽度=50)

ttk .按钮(根,text='列,命令=列)。包装()

root.mainloop()

结果:

说明:点击'列'按钮后,语文成绩那一列的宽度由70变为50。

1.3删除(项)

删除指定的第10项。子节点也会被一起删除,但是第一层节点不会被删除。

将tkinter作为坦克导入

从tkinter导入ttk

root=tk .Tk()

root.geometry('320x240 ')

tk .Label(root,text='成绩表').包装()

area=('# ','数学','语文','英语)

ac=('所有,' m ',' c ',' e ')

数据=[('张三','90','88','95'),

('李四','100','92', '90'),

('王二','88','90', '91')

]

tv=ttk .Treeview(root,columns=ac,show='headings ',

高度=5)

对于范围(4)中的我:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的我:

tv.insert(',' end ',values=data[i])

def delete():

电视。删除(电视。选择())

ttk .按钮(root,text='Delete ',command=delete).包装()

root.mainloop()

结果:

1.4分离(项目)

派遣的方法与删除类似,不过派遣不是真正的删除了指定的项目,而是隐藏了内容,可以使用移动的方法重新将隐藏的数据再显示出来。

将tkinter作为坦克导入

从tkinter导入ttk

root=tk .Tk()

root.geometry('320x240 ')

tk .Label(root,text='成绩表').包装()

area=('# ','数学','语文','英语)

ac=('所有,' m ',' c ',' e ')

数据=[('张三','90','88','95'),

('李四','100','92', '90'),

('王二','88','90', '91')

]

tv=ttk .Treeview(root,columns=ac,show='headings ',

高度=5)

对于范围(4)中的我:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的我:

tv.insert(',' end ',values=data[i])

分离=无

索引=无

定义分离():

全局分离

全球指数

detach=tv.selection()

索引=电视.索引(分离)

电视。分离(分离)

定义附加():

全局分离

全球指数

如果分离:

tv.move(分离,'',索引)

ttk .按钮(root,text='Detach ',command=detach).包装()

ttk .按钮(root,text='Attach ',command=attach).包装()

root.mainloop()

说明:先选中一行,然后点击'分离'按钮,此时会将选中的行隐藏。但是相关的身份证明(识别)和指数会依旧被记录。再点击'附加'按钮,使用移动()方法就会重新显示隐藏的数据。

1.5 exists(item)

判断指定的项目是否存在。需要注意的是,使用分离()方法隐藏的项目会被认为是存在的,因为相应的身份证明(识别)等信息是依然被系统记录没有清空的。返回值为没错,如果指定的项目不存在,否则返回错误。

将tkinter作为坦克导入

从tkinter导入ttk

root=tk .Tk()

root.geometry('320x240 ')

tk .Label(root,text='成绩表').包装()

area=('# ','数学','语文','英语)

ac=('所有,' m ',' c ',' e ')

数据=[('张三','90','88','95'),

('李四','100','92', '90'),

('王二','88','90', '91')

]

tv=ttk .Treeview(root,columns=ac,show='headings ',

高度=5)

对于范围(4)中的我:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的我:

tv.insert(',' end ',values=data[i])

打印(电视存在(' I002 ')

root.mainloop()

结果:

结果为真实的

1.6焦点(项目=无)

焦点()方法有三种情况:

(1)有项目被选中同时参数为没有人

返回当前被选中的项目的标识耳间强度差异(非胰岛素依赖型糖尿病)

(2)无项目被选中同时参数为没有人

返回空字符串''

(3)输入项目参数

指定的项目会获得集中注意力。

注意:获得集中不表示被选中。

#有项目被选中同时参数为没有,返回耳间强度差异(非胰岛素依赖型糖尿病)

将tkinter作为坦克导入

从tkinter导入ttk

root=tk .Tk()

root.geometry('320x240 ')

tk .Label(root,text='成绩表').包装()

area=('# ','数学','语文','英语)

ac=('所有,' m ',' c ',' e ')

数据=[('张三','90','88','95'),

('李四','100','92', '90'),

('王二','88','90', '91')

]

tv=ttk .Treeview(root,columns=ac,show='headings ',

高度=5)

对于范围(4)中的我:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的我:

tv.insert(',' end ',values=data[i])

定义焦点():

打印(电视.焦点())

ttk .按钮(根,文本='焦点,命令=焦点)。包装()

root.mainloop()

结果:

结果为:I003

#无项目被选中同时参数为没有人

#项目参数不为空

将tkinter作为坦克导入

从tkinter导入ttk

root=tk .Tk()

root.geometry('320x240 ')

tk .Label(root,text='成绩表').包装()

area=('# ','数学','语文','英语)

ac=('所有,' m ',' c ',' e ')

数据=[('张三','90','88','95'),

('李四','100','92', '90'),

('王二','88','90', '91')

]

tv=ttk .Treeview(root,columns=ac,show='headings ',

高度=5)

对于范围(4)中的我:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的我:

tv.insert(',' end ',values=data[i])

定义焦点():

电视焦点(“I002”)

打印(电视.焦点())

ttk .按钮(根,文本='焦点,命令=焦点)。包装()

root.mainloop()

注:使用焦点()方法,并不会让获得集中的项目被高亮显示。如果要高亮显示,请使用selection_set()方法。

1.7 get_children(item=None)

返回指定项目的子节点。如果该项目没有子节点返回没有。如果没有指定节点,默认返回根节点的子节点。

1.8标题(栏,选项=无,* *千瓦)

设置或者查询表头行的配置参数。如果是表格形式的,列是列的位置(就是第几列,从0计数)或者列的别名。如果是树形结构的(比如文件目录),列的值为'#0'。

如果没有选择权参数,返回的是当前的配置数据。

标题的选项有:

选项

含义

对齐模式。取值有北、东、南、西、东北、西北、东南、西南和居中。

命令

与指定列相关的回调函数

图像

在表头显示图片

文本

在表头显示文本

状态

当前列的状态

将tkinter作为坦克导入

从tkinter导入ttk

root=tk .Tk()

root.geometry('320x240 ')

tk .Label(root,text='成绩表').包装()

area=('# ','数学','语文','英语)

ac=('所有,' m ',' c ',' e ')

数据=[('张三','90','88','95'),

('李四','100','92', '90'),

('王二','88','90', '91')

]

tv=ttk .Treeview(root,columns=ac,show='headings ',

高度=5)

对于范围(4)中的我:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的我:

tv.insert(',' end ',values=data[i])

定义标题():

打印(电视标题(列=1))

ttk .按钮(root,text='Heading ',command=heading).包装()

root.mainloop()

结果:

{ '文本': '数学,'图像': '','锚点': '中心','命令': '','状态':' ' }

1.9识别(组件,x,y)

返回在坐标(x,y)处的部件信息。部件包括:区域(标题,单元格等),项,列,行,和元素。

将tkinter作为坦克导入

从tkinter导入ttk

root=tk .Tk()

root.geometry('320x240 ')

tk .Label(root,text='成绩表').包装()

area=('# ','数学','语文','英语)

ac=('所有,' m ',' c ',' e ')

数据=[('张三','90','88','95'),

('李四','100','92', '90'),

('王二','88','90', '91')

]

tv=ttk .Treeview(root,columns=ac,show='headings ',

高度=5)

对于范围(4)中的我:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的我:

tv.insert(',' end ',values=data[i])

定义标识():

print(tv.identify('region ',120,30))

ttk .按钮(root,text='Identify ',command=identify).包装()

root.mainloop()

结果:

细胞

1.10识别_列(十)

给定x坐标,返回它所属的列号。返回值的格式是' #n '。n是从1开始计数的列号。请注意,返回的是实际显示的列号,而不是逻辑定义的列号。如果使用displaycolumns,实际显示的列号与columns定义的列号不一致。具体用法类似于identify,可以参考一下。

1.11 identify_element(x,y)

返回(x,y)处的元素。使用方法为:tv.identify_element(140,25)

1.12识别_区域(x,y)

返回坐标(x,y)处的树视图组件。Treeview的组件包括:

成分

意义

没有任何东西

不在Treeview控件内

标题

标题位置

分离器

在分界线上

在图标列中(树列表指示展开/折叠的图标)

细胞

在细胞内

使用方法是:

tv.identify_region(140,25)

1.13 identify_row(y)

给定y坐标,返回指定的项目索引(如“I002”)。如果没有内容,则返回空字符串。

用法:

tv.index('I002 ')

1.14索引(项目)

数字化项目索引,从0开始计数。用法:

tv.index('I002 ')

1.15 set_children(项目,新子项)

将item的新子节点设置为newchildren,现有的子节点将被移除。一般用于树形结构。

tv.set_children('I003 ',' I00E ')

注:取I00E作为新I003的子节点。

1.16插入(父,索引,iid=无,**kw)

插入新项目。

(1)父母

对于表类型的Treeview,父级通常为空。对于树类型的Treeview,parent是父节点。

(2)索引

指示插入新项目的位置。它可以是“结束”或一个数字。例如,如果希望新插入的项成为第一个子节点或位于第一行,则索引设置为0。如果是第二个子节点或第二行,则设置index=1。如果该项在末尾插入,则设置index='end '

(3)iid

如果没有分配,则使用系统自动生成的id。如果输入一个id,必须确保它不与现有id重复。否则,系统会自动生成id。

(4)* *千瓦

设置项目的属性。支持的属性有:

选择权

意义

图像

显示图像

打开

根据树形结构,确认插入的项目是打开的还是折叠的。真开,假崩。

标签

为新插入的项目设置标签。

文本

显示文本

价值观念

在表结构中,要显示的值。这些值是根据逻辑结构分配的,即根据列设置的列顺序分配的。如果输入的数字小于columns指定的列数,则插入一个空字符串。

上一章的例子中已经使用了Insert,以供参考。

1.17项目(项目,选项=无,* *千瓦)

item()方法有3个函数:

(1)只有项目参数

返回项目相关数据的字典。字典的关键值包括:

文本、图像、打开、标签和值。Values是由item参数指定的节点内容。

tv.item('I002 ')

结果:

{'text ':' ',' image ':' ',' values': ['Li Si ',100,92,90],' open': 0,' tags':'}

(2)输入物料和选件参数。

返回由item指定的节点中的option指定的选项的值。例如:

tv.item('I002 ',option='values ')

就是返回节点的内容。参见上一节关于返回数据字典的键值。

(3)项目和kw

使用kw中的键-值对(即选项值)来修改由item指定的节点的相关选项。最常见的方法是使用值来修改节点的内容。

例如:

Tv.item('I002 ',值=('李冯',' 90 ',' 88 ',' 66 '))

结果:

您可以看到第二行中的数据已经被修改。

1.18移动(项目、父项、索引)

move()方法有两个功能:

(1)重新显示分离(重新连接)的项目

(2)将item指定的节点移动到parent的子节点,位置由index指定。

请注意,父节点不能移动到子节点之下。因为无法实现。也就是说,如果index的值为0或负值,则意味着item的位置在parent的第一个子节点。如果index的值大于或等于子节点的总数,则意味着该项被放置在最后一个子节点上。

1.19下一步(项目)

(1)如果item不是当前父节点的最后一个子节点,则返回下一个子节点。

(2)如果item已经是最后一个子节点,则返回一个空字符串。

(3)如果是表格类型的Treeview,返回下一个item对象。如果item已经是最后一个item对象,则返回空字符串。

1.20父项(项目)

树形结构的Treeview,返回父节点的ID;如果是表类型的Treeview,则返回空字符串。

1.21上一个(项目)

类似于next(),只是返回前一项的ID。

1.22参见(项目)

确保item指定的节点在Treeview控件中可见。当节点较多时,这种方法可以在窗口中快速显示所需的节点,而不需要用滚动条滚动。

1.23选择(项目=无)

返回当前选定节点的iid。

1.24选择集(项目)

选择由项目指定的节点。项目可以是单个节点的ID,也可以是多个节点ID的元组。

将tkinter作为tk导入

从tkinter导入ttk

root=tk。Tk()

root.geometry('320x240 ')

Tk。Label(root,text=' report card ')。包装()

Area=('# ','数学','中文','英文')

ac=('所有',' m ',' c ',' e ')

Data=[('张三',' 90 ',' 88 ',' 95 '),

('李四','一百','九二','九零'),

(“王二”,“88”,“90”,“91”)

]

tv=ttk。Treeview(root,columns=ac,show='headings ',

高度=5)

对于范围(4)中的I:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的I:

tv.insert(',' end ',values=data[i])

定义选择():

tv.selection_set('I001 ',' I002 ')

ttk。按钮(根,text='选择',command=选择)。包装()

root.mainloop()

结果:

1.25选择_删除(项目)

与selection_set()相反,selection_remove()从选择中删除由项目指定的节点。

1.26选择_添加(项目)

将项目指定的所有节点添加到选定集中。那么selection_add()和selection_set()有什么区别呢?Selection_set相当于重置选中的节点。无论之前如何选择,在执行selection_set后,只有在selection_set中输入的项目节点才会被选择。Selection_add()对当前选择没有影响,只是将由items指定的节点添加到选择集中。

1.27选择_切换(项目)

这种方法的作用相当于数字电路中的非门,即选中的节点变为选中,未选中的节点变为选中。

1.28集合(项目,列=无,值=无)

(1)仅项目

返回指定节点(行)的数据字典。字典的键值是columns属性定义的列的别名,对应的数值是节点(行)的内容。这种用法相当于获取指定节点的行内容和列别名信息。

(2)仅项目和列

返回由item和column指定的单元格的内容。列的值是别名。

tv.set('I002 ',column='all ')

(3)项目、列和值

如果这三个参数都有值,则由item和column指定的单元格的内容将被修改。

tv.set('I002 ',列='all ',值='abc ')

1.29 tag_bind( tagname,sequence=None,callback=None)

将tagname指定的标记与sequence指定的事件绑定,回调函数由callback设置。注意,一个标签可能与多个节点相关。也就是说,可能有多个项目绑定到事件。

将tkinter作为tk导入

从tkinter导入ttk

root=tk。Tk()

root.geometry('320x240 ')

Tk。Label(root,text=' report card ')。包装()

Area=('# ','数学','中文','英文')

ac=('所有',' m ',' c ',' e ')

Data=[('张三',' 90 ',' 88 ',' 95 '),

('李四','一百','九二','九零'),

(“王二”,“88”,“90”,“91”)

]

tv=ttk。Treeview(root,columns=ac,show='headings ',

高度=5)

对于范围(4)中的I:

tv.column(ac[i],width=70,anchor='e ')

tv.heading(ac[i],text=area[i])

tv.pack()

对于范围(3)中的I:

tv.insert(',' end ',values=data[i],tags=str(i))

def tb(*args):

打印(*参数)

定义绑定():

tv.tag_bind('1 ',sequence='Button-1 ',

回拨=tb)

ttk。按钮(root,text='Bind ',command=bind)。包装()

root.mainloop()

结果:

按钮按事件状态=Mod1数量=1 x=131 y=61

注意:为插入的每一行数据设置一个标签,比如第一行的标签为‘0’,以此类推。然后通过tag_bind()方法绑定鼠标左键事件。

1.30 tag_configure( tagname,option=None,**kw)

类似于item()方法,它有三个函数:

(1)仅标记名

返回由tagname指定的标记的选项/属性数据字典。例如,tv.tag _ configure ('2 ')的返回值是:

{ '文本': '','图像': '','锚点': '','背景': '','前景': '','字体':' ' }

(2)标记名和选项

返回由tagname指定的标记中的选项指定的属性值。如option='anchor ',则返回anchor属性的值。

(3)标记名和功率

对于tagname指定的标记,使用kw中的参数来设置相关属性。有关属性值,请参见(1)中的描述。

1.31 tag_has(tagname,item=None)

(1)仅标记名

返回与tagname指定的标记相关的所有子节点。

(2)标记名和项目

如果item指定的子节点有tagname指定的标记,则返回True否则,它返回False。确定标签是否存在。

关于Python tkinter树列表控件(Treeview)的使用,本文到此结束。有关Python tkinter树列表的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: