《tkinter实用教程21》treeview 节点插入、单选,面试官问的那些前端原理你都懂吗

本文详细介绍了Tkinter库中的Treeview控件的创建、参数配置(如columns,displaycolumns,height等)、作为表格和树的使用方法,以及如何插入子节点和处理选中项的事件。
摘要由CSDN通过智能技术生成

  • tkinter Treeview 控件的使用方法

  • 创建 Treeview 控件

  • Treeview 参数解读

  • 作为表格使用 Treeview

  • 作为树使用 Treeview

  • Treeview 插入子节点

  • Treeview 事件

  • 如何获取当前选中项

  • 单选项获取

  • 多选项获取

  • Tree 选中子节点

更多《Tkinter 实用教程》系列文章

tkinter Treeview 控件的使用方法


创建 Treeview 控件

创建 Treeview 使用 ttk.Treeview 类,语法如下:

tree = ttk.Treeview(master, options)

Treeview 参数解读

| 参数 | 作用 |

| — | — |

| columns | 接收一个列表(tuple),列表中的每个元素都代表表格中的一列(可以理解为 ID),列表的长度就是表格的列数。 |

| displaycolumns | 接收一个列表(tuple),列表每个元素都代表 columns 中列的编号,用于设置列表要显示的列,以及显示列的顺序(没有在列表中的列不会显示)。传入"#all"显示所有列。 |

| height | 表格的高度,也就是能够显示的行数。 |

| padding | 内容距离组件边缘的距离。 |

| selectmode | 有 "extended"(默认选项)、"browse""none"三种选项,分别代表多选(Ctrl+鼠标左键),单选以及不能改变选项。 |

| show | 有 "tree""headings""tree headings" 三种选项,分别代表显示图标列(编号为 "#0")、不显示图标列(仅显示数值列)以及显示所有列(图标列和数值列)。 个人理解:用作树需要加上"tree",用作表使用"headings"。 |

作为表格使用 Treeview

以下代码展示了将 Treeview 控件作为表格使用,展示一系列数据的方法:

from tkinter import *

from tkinter import ttk

“”"

魏大王学编程(www.weidawang.xyz)

tkinter 实用教程系列

Treeview 作为表格使用的简单案例

“”"

main = Tk()

data = [(1, “小明”, 23, ‘男’, ‘2021-09-21’), (2, “小强”, 23, ‘男’, ‘2021-09-21’),

(3, “小红”, 23, ‘女’, ‘2021-09-21’), (4, “铁头”, 23, ‘男’, ‘2021-09-21’)]

tree = ttk.Treeview(main, columns=(‘id’, ‘name’, ‘age’, ‘sex’, ‘birth’), show=“headings”, displaycolumns=“#all”)

tree.heading(‘id’, text=“编号”, anchor=W)

tree.heading(‘name’, text=“姓名”, anchor=W)

tree.heading(‘age’, text=“年龄”, anchor=W)

tree.heading(‘sex’,text=“性别”,anchor=W)

tree.heading(‘birth’, text=“出生日期”, anchor=W)

for itm in data:

tree.insert(“”,END,values=itm)

tree.pack(expand=1, fill=BOTH)

main.mainloop()

代码执行结果如下图所示:

01_create.png

作为树使用 Treeview

from tkinter import *

from tkinter import ttk

“”"

魏大王学编程(www.weidawang.xyz)

tkinter 实用教程系列

Treeview 作为树使用的简单案例

“”"

main = Tk()

data = [(1, “小明”, 23, ‘男’, ‘2021-09-21’), (2, “小强”, 23, ‘男’, ‘2021-09-21’),

(3, “小红”, 23, ‘女’, ‘2021-09-21’), (4, “铁头”, 23, ‘男’, ‘2021-09-21’)]

tree = ttk.Treeview(main, columns=(‘id’, ‘name’, ‘age’, ‘sex’,‘birth’), show=“tree headings”, displaycolumns=“#all”)

tree.heading(“#0”, text=“学校”, anchor=W)

tree.heading(‘id’, text=“编号”, anchor=W)

tree.heading(‘name’, text=“姓名”, anchor=W)

tree.heading(‘age’, text=“年龄”, anchor=W)

tree.heading(‘sex’, text=“性别”, anchor=W)

tree.heading(‘birth’, text=“出生日期”, anchor=W)

stu_root = tree.insert(“”, END, text=“学生”)

man = tree.insert(stu_root, END, text=“男”)

wom = tree.insert(stu_root, END, text=“女”)

for itm in data:

if(itm[3]==“男”):

tree.insert(man,END,text=itm[1],values=itm)

else:

tree.insert(wom,END,text=itm[1],values=itm)

tree.pack(expand=1, fill=BOTH)

main.mainloop()

代码执行结果:

02_as_tree.png

如果将代码中 displaycolumns="#all" 修改为 displaycolums=() ,树的效果如下:

03_as_tree2.png

Treeview 插入子节点

向 Treeview 对象中插入一个子节点,需要使用 insert 方法:

itm = tree.insert(options)

insert 函数的返回值,就是插入节点的对象。

参数列表如下:

| 参数 | 描述 |

| — | — |

| parent | 指定父节点,如果需要插入根节点,传入""。 |

| index | 指定插入位置,0表示在头部插入,END表示在尾部插入。 |

| text | 指定在图标栏展示的内容,也就是在编号"#0"列展示的内容,只有 show 参数包含 tree 时才能看到。 |

| values | 指定在数据列展示的内容,也就是 columns 指定的列。 |

| image | 指定图标栏显示的图标,是一个PhotoImage对象 |

Treeview 事件

Treeview 有三个虚拟事件分别是:

  • <<TreeviewSelect>>:选中项发生变化时触发该事件;

  • <<TreeviewOpen>>:当菜单项open=True时触发该事件;

  • <<TreeviewClose>>:当菜单项open=False时触发该事件;

这些事件的使用方法和之前的控件一样,比较简单,下文有案例,不过多解释。

如何获取当前选中项

获取当前选中项有两种情况,第一种就是单选项的获取,比较简单,而多选项的获取稍微复杂了一点。

单选项获取

先使用 Treeview 的 focus() 方法获取当前焦点项,再利用 set 方法获取焦点项的值。

获取到的值就是在插入表、树子节点时时指定的 values 值。

foc = tree.focus()

val = tree.set(foc)

示例代码如下:

from tkinter import *

from tkinter import ttk

“”"

魏大王学编程(www.weidawang.xyz)

tkinter 实用教程系列

Treeview 事件案例

“”"

def onSelect(e):

itm = tree.set(tree.focus())

print(itm)

pass

main = Tk()

data = [(1, “小明”, 23, ‘男’, ‘2021-09-21’), (2, “小强”, 23, ‘男’, ‘2021-09-21’),

(3, “小红”, 23, ‘女’, ‘2021-09-21’), (4, “铁头”, 23, ‘男’, ‘2021-09-21’)]

tree = ttk.Treeview(main, columns=(‘id’, ‘name’, ‘age’, ‘sex’,

‘birth’), show=“headings”, displaycolumns=“#all”)

tree.heading(‘id’, text=“编号”, anchor=W)

tree.heading(‘name’, text=“姓名”, anchor=W)

tree.heading(‘age’, text=“年龄”, anchor=W)

tree.heading(‘sex’,text=“性别”,anchor=W)

tree.heading(‘birth’, text=“出生日期”, anchor=W)

for itm in data:

tree.insert(“”,END,values=itm)

tree.pack(expand=1, fill=BOTH)

tree.bind(“<>”,onSelect)

main.mainloop()

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端视频资料:

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

外链图片转存中…(img-k6NsmhOY-1712206382209)]

前端视频资料:
[外链图片转存中…(img-UVMoj8e5-1712206382210)]

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 31
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值