tkinter树形图组件
文章目录
- 初步
- 回调函数
- 绑定滚动条
初步
Treeview是ttk中的树形表组件,功能十分强大,非常适用于系统路径的表达。为了知道属性图到底是什么,下面先做个最简单的树形图
其代码如下
import tkinter as tk
from tkinter import ttkdct = {"中国" : ["北京", "台北", "香港"],"美国" : ["纽约", "华盛顿"],"日本" : ["东京", "大阪"]
}win = tk.Tk() # 设置窗口大小# 此为根节点
tree = ttk.Treeview(win, show = "tree")for key in dct:father = tree.insert("", 0, key, text=key)for v in dct[key]:tree.insert(father, 1, v, text=v, values=(f"{key}-{v}"))tree.pack(side=tk.LEFT, expand = True, fill = tk.BOTH)
win.mainloop()
首先,我们创建了一个字典,用于构成树形图的节点。
接下来,ttk.Treeview
生成一个树形图,这个几乎没什么问题,和tkinter其他所有组件完全一致,只是多了个"show"
,表明这是个树形图,说明Treeview这个组件或许还有其他形式。
然后,就到了唯一关键的函数insert
,其输入参数分别为父节点、所在列、节点ID,如果不输入节点ID,那么将有系统分配,这个参数并不是必须的。而后text
为其显示的名称,非常直观。最后values是一个并未体现在界面上的值,但可以调用。
回调函数
Treeview有三种基本的回调函数,分别当选择节点、打开父节点和关闭父节点时触发。仍以上述Treeview为例,其效果如下
具体修改方案为,在mainloop之前,添加如下代码
def slct(evt):for item in tree.selection():print(tree.item(item, "values"))def open_(evt):for item in tree.selection():print(f"{item} has opened")def close(evt):for item in tree.selection():print(f"{item} has closed")tree.bind('<<TreeviewSelect>>', slct)
tree.bind('<<TreeviewOpen>>', open_)
tree.bind('<<TreeviewClose>>', close)
其中,绑定的三个函数slct, open_和close,分别对应选中节点、打开或关闭节点时触发。其函数内容则基本相同,都是打印当前选中节点的相关值,其中父节点直接输出节点的名字,子节点则输出其内部定义的values。
通过tree.selection()可获取选中内容,其返回值是一个元组;如果改用tree.focus(),则可返回焦点所在的节点。
当然,这两个函数不仅有读取的功能,当二者有输入时,例如focus(item)
可让item
获得焦点;而selection(selop, items)
,若selop
为None,则以列表形式返回所有items,若selop
指定了选择方法,则按照给定的方法选中相应的items。
绑定滚动条
这种树形图如果全都展开,一定会特别长,为了在有限的区间展示无限多的树形图节点,就需要为其绑定滚动条,其实很简单,只需在mainloop前面添加下面几行代码即可
scroll = ttk.Scrollbar(win)
scroll.config(command=tree.yview)scroll.pack(side=tk.RIGHT, fill=tk.Y)
# 给treeview添加配置
tree.configure(yscrollcommand=scroll.set)
效果如下
相关文章:

tkinter树形图组件
文章目录 初步回调函数绑定滚动条 初步 Treeview是ttk中的树形表组件,功能十分强大,非常适用于系统路径的表达。为了知道属性图到底是什么,下面先做个最简单的树形图 其代码如下 import tkinter as tk from tkinter import ttkdct {"…...

多线程的创建
一、基本概念 1 cpu CPU的中文名称是中央处理器,是进行逻辑运算用的,主要由运算器、控制器、寄存器三部分组成,从字面意思看就是运算就是起着运算的作用,控制器就是负责发出cpu每条指令所需要的信息,寄存器就是保存运…...
【django】APPEND_SLASH 路由末尾的斜杠问题
url路由末尾是否加斜杠的规范 加斜杠:表示是目录不加斜杠: 表示是文件 在django中的setting中,默认APPEND_SLASH True, 即当请求的路由末尾没有加斜杠, 如果尝试加上斜杠后,能在后端路由里匹配到,则会自…...

iOS16.0:屏幕旋转
此文写于2022年08月03日,距离iOS16正式版推出还有一个多月的时间,iOS16 beta版本有很多API的修改,今天讨论的是屏幕旋转,基于Xcode 14.0 beta4。 之前的屏幕旋转会报错: [Orientation] BUG IN CLIENT OF UIKIT: Settin…...

Carla学习笔记(二)服务器跑carla,本地运行carla-ros-bridge并用rviz显示
一、服务器跑carla 详见Carla学习笔记(一)服务器跑carla本地显示窗口_Zero_979的博客-CSDN博客 只需要启动服务器端就行: ./CarlaUE4.sh -carla-rpc-port2000 -RenderOffScreen -graphicsadaper1 二、本地下载 carla-ros-bridge 官方库&…...

数学建模--退火算法求解最值的Python实现
目录 1.算法流程简介 2.算法核心代码 3.算法效果展示 1.算法流程简介 """ 1.设定退火算法的基础参数 2.设定需要优化的函数,求解该函数的最小值/最大值 3.进行退火过程,随机产生退火解并且纠正,直到冷却 4.绘制可视化图片进行了解退火整体过程 &…...

地理地形sdk:Tatuk GIS Developer Kernel for .NET Crack
Tatuk GIS Developer Kernel for .NET 是一个变体,它是受控代码和 .NET GIS SDK,用于为用户 Windows 操作系统创建专业 GIS 软件的过程。它被认为是一个完全针对Win Forms 的.NET CIL,WPF 框架是针对C# 以及VB.NET、VC、Oxy 以及最终与.NET 的…...

Day_81-87 CNN卷积神经网络
目录 一. CNN卷积神经网络与传统神经网络的不同 1. 模型图 2. 参数分布情况 3. 卷积神经网络和传统神经网络的层次结构 4. 传统神经网络的缺点: 二. CNN的基本操作 1. 卷积 2. 池化 三. CNN实现过程 1. 算法流程图 2. 输入层 3. 卷积层 4. 激活层 5. 池化层 6. 全连…...

关于mybatisplus报错:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplat的问题
可能是mybatisplus版本不兼容的问题,我之前用的3.4.0,springboot版本是3.1.3,maven版本是3.8.8,运行的时候报了这个错。现在修改了mybatisplus的版本,如下图: 这样就不报错了。 大家可以在这里找合适的my…...
Spring AOP基础动态代理基于JDK动态代理实现
目录 1. 预备知识-动态代理 1.1 什么是动态代理 1.2 动态代理的优势 1.3 基于JDK动态代理实现 2. AOP 2.1 基本概念 2.2 AOP带来的好处 3. Spring AOP 3.1 前置通知 3.2 后置通知 3.3 环绕通知 3.4 异常通知 3.5 适配器 1. 预备知识-动态代理 1.1 什么是动态代理…...

第一章 计算机系统概述 五、中断和异常、系统调用
目录 一、中断的作用 二、中断的类型 1、内中断(异常) 2、外中断 三、中断机制的基本原理 四、系统调用 1、定义: 2、与库函数的区别 3、按功能分类 4、作用 一、中断的作用 1、“中断”是让操作系统内核夺回CPU使用权的唯一途径 …...

【C语言】文件操作(上)
一.什么是文件 文件是磁盘上的文件,文件中存放的数据不随程序的退出而销毁. 二.文件的打开与关闭 1.文件指针 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等&…...

【Linux】让笔记本发挥余热,Ubuntu20.04设置WiFi热点
Ubuntu20.04设置WiFi热点 由于卧室距离客厅较远,wifi信号太弱,体验极差。鉴于卧室的笔记本电脑是通过网线连接的客厅路由器,因此考虑将这台老破笔记本作为“路由器”,以便发挥它的余热。实验证明,上网速度提升数十倍&a…...

【云平台】遥感地信云平台收录
文章目录 国内1 航天宏图PIE-Engine2 商汤科技3 AI Earth4 EarthDataMiner国外结语国内 1 航天宏图PIE-Engine https://engine.piesat.cn/live-show-list 在这里插入图片描述 2 商汤科技 https://senseearth-cloud.com/map 3 AI Earth https://engine-aiearth.aliyun.com…...
23种设计模式之---单例模式
闲来无事学一下设计模式,希望这23种可以一直更下去,什么时候能更完呢,也许一个月,也许一年,也许断更 设计模式六大原则 本文是23篇的第一篇,在学习设计模式之前,你需要了解下六大原则。 1、开…...

蓝桥杯官网练习题(纸牌三角形)
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 A,2,3,4,5,6,7,8,9 共 99 张纸牌排成一个正三角形(A 按 1 计算)。要求每个边的和相等。 下图就是一种排法。 这样的排法可能会有很多。 如果…...

一辆新能源汽车的诞生之旅:比亚迪常州工厂探营
作为在新能源汽车领域首屈一指的国产品牌,比亚迪近年来可以说是捷报频传,高奏凯歌。 以比亚迪常州工厂为例,据介绍该工厂当初规划设计时定下的生产目标,是年产量能够达到20万辆。然而在2023年上半年,该工厂光是主要销往…...

【算法专题突破】双指针 - 最大连续1的个数 III(11)
目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:1004. 最大连续1的个数 III - 力扣(Leetcode) 这道题不难理解,其实就是求出最长的连续是1的子数组, 但是,他支…...
java实现备忘录模式
备忘录模式是一种行为设计模式,它允许您捕获一个对象的内部状态,并在稍后的时间点将其恢复。这对于需要撤销操作或恢复到先前状态的应用程序非常有用。以下是在 Java 中实现备忘录模式的一般步骤: 创建一个原发器类(Originator&am…...

aardio语言的通用数据表维护
import win.ui; /*DSG{{*/ var winform win.form(text"通用数据表维护";right617;bottom427;bgcolor15780518) winform.add( buttonAdd{cls"button";text"增加空行";left469;top40;right564;bottom80;flat1;z2}; buttonDel{cls"button&quo…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

MySQL体系架构解析(三):MySQL目录与启动配置全解析
MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中,用…...

深入理解 C++ 左值右值、std::move 与函数重载中的参数传递
在 C 编程中,左值和右值的概念以及std::move的使用,常常让开发者感到困惑。特别是在函数重载场景下,如何合理利用这些特性来优化代码性能、确保语义正确,更是一个值得深入探讨的话题。 在开始之前,先提出几个问题&…...