本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。