Tkinter Treeview的基本概念

Tkinter Treeview的基本概念

Treeview是tkinter.ttk的控件,这个控件主要是提供多栏的显示功能,我们可以称其为树状表格数据(Treeview)。在设计时也可以在左边栏设计成树状结构或是称层次结构,用户可以显示或隐藏任何部分,这个最左边的栏称为图标栏。

设计Treeview控件的基本思想是,使用Treeview构造方法建立Treeview对象。

Treeview的语法如下。

Treeview(master, options, ...)

Treeview( )方法的第一个参数是父对象,表示这个Treeview将建立在哪一个父对象内。下列是Treeview( )方法内其他常用的options参数。

(1)columns:栏位的字符串,其中,第一个栏位是图标栏是默认的,不在此设置范围,如果设置columns=("Name","Age"),则控件有三栏,首先是最左栏的图标栏,可以进行展开(expand)或是隐藏(collapse)操作,另外两栏是Name和Age。

(2)cursor:可以设置光标在此控件上的外观。

(3)displaycolumns:可以设置栏位显示顺序。

  • 如果参数是“#all”表示显示所有栏,同时依建立顺序显示。
  • 如果设置columns=("Name","Age","Date"),使用insert( )插入元素时需要依次插入元素。同样状况如果使用columns(2,0),(2,0)是指实体索引,则图标栏在最前面,紧跟着是Date栏,然后是Name栏。这种状况也可以写成columns=("Date","Name")

(4)height:控件每行的高度。

(5)padding:可以使用1~4个参数设置内容与控件框的间距,它的规则如下。

Value Left Top Right Bottom
a a a a a
ab a b a b
abc a c b c
abcd a b c d

(6)selectmode:用户可以使用鼠标选择项目的方式。

  • selectmode=BROWSE,一次选择一项,这是默认。
  • selectmode=EXTENDED,一次可以选择多项。
  • selectmode=NONE,无法用鼠标执行选择。

(7)show:默认是设置显示图标栏的标签show="tree",如果省略则是显示图标栏,如果设为show="headings",则不显示图标栏。

(8)takefocus:默认是True,如果不想被访问可以设为False。

下面以实例说明更多规则。

示例1

简单建立Treeview控件的应用。

from tkinter import *
from tkinter.ttk import *

root = Tk()
root.title("apidemos.com")

# 建立Treeview
tree = Treeview(root,columns="cities") # tree = Treeview(root,columns=("cities"))
# 建立栏标题
tree.heading("#0",text="State") # 图标栏
tree.heading("#1",text="City")
# 建立内容
tree.insert("",index=END,text="Eleanor",values="Chicago")
tree.insert("",index=END,text="California",values="Los Angeles")
tree.insert("",index=END,text="Tokyo",values="Houston")
tree.pack()

root.mainloop()

输出:

Tkinter Treeview的基本概念

建议读者单击选择,以体会Treeview的基本操作,下方右图是单击选择的示范输出。

Tkinter Treeview的基本概念

上述程序第9行建立Treeview控件,此控件名称是tree,此控件有一个栏位,域名是cities,未来程序设计可以使用此cities代表这一个栏位。经这样设置后,我们可以知道此多栏窗体有两个栏位,除了cities外,另外左边有图标栏位。

程序第11、12行使用heading( )方法,在这个方法内建立了栏标题,其中,第一个参数“#0”是指最左栏图标栏位,“#1”是指第一个栏位,所以这两行分别建立了两个栏标题。

程序第14~16行使用insert( )方法插入Treeview控件内容,在这个方法中的第一个参数“”,代表父id,因为图标栏未来可以有树状结构,所以有这一个栏位设计,后面会有实例说明。当所建的栏是最顶层时,可以用“”空字符串处理。第二个参数index=END代表将资料插入Treeview末端,它的思想与Text控件的END相同。第三个参数text是设置图标栏的内容。第4个参数的values是设置City栏的内容。

示例2

在建立Treeview控件时,增加show="headings"参数,将不显示图标栏。

from tkinter import *
from tkinter.ttk import *

root = Tk()
root.title("apidemos.com")

# 建立Treeview
tree = Treeview(root,columns=("cities"),show="headings")
# 建立栏标题
tree.heading("#0",text="State") # 图标栏
tree.heading("#1",text="City")
# 建立内容
tree.insert("",index=END,text="Eleanor",values="Chicago")
tree.insert("",index=END,text="California",values="LosAngeles")
tree.insert("",index=END,text="Tokyo",values="Houston")
tree.pack()

root.mainloop()

输出:

Tkinter Treeview的基本概念

示例3

示例1第9行columns=("cities"),指出栏标题名称是cities,我们可以使用此字符串代表栏位。在第12行使用“#1”代表cities栏,其实可以使用此“cities”取代“#1”。

from tkinter import *
from tkinter.ttk import *

root = Tk()
root.title("apidemos.com")

# 建立Treeview
tree = Treeview(root,columns=("cities"))
# 建立栏标题
tree.heading("#0",text="State") # 图标栏
tree.heading("cities",text="City") # tree.heading("#1",text="City下施")
# 建立内容
tree.insert("",index=END,text="Eleanor",values="Chicago")
tree.insert("",index=END,text="California",values="LosAngeles")
tree.insert("",index=END,text="Tokyo",values="Houston")
tree.pack()

root.mainloop()

输出:

Tkinter Treeview的基本概念

在程序1的第14行insert( )方法中第4个参数values是设置所插入的内容,上述由于除了图标栏外只有一个栏位,所以只是设置values等于字符串内容,如果有多栏时,须使用values=(value1, value2, … ),如果所设置的内容数太少时其他栏将是空白,如果所设置的内容数太多时多出来的内容将被抛弃。

示例4

增加population人口数栏位,其中,人口数的单位是万人。

from tkinter import *
from tkinter.ttk import *

root = Tk()
root.title("apidemos.com")

# 建立Treeview
tree = Treeview(root,columns=("cities","populations"))
# 建立栏标题
tree.heading("#0",text="State") # 图标栏
tree.heading("#1",text="City")
tree.heading("#2",text="Populations")
# 建立内容
tree.insert("",index=END,text="Eleanor",values=("Chicago","800")) 
# tree.insert("",index=END,text="Eleanor",values=("Chicago","800","9999"))# 多余信息
tree.insert("",index=END,text="California",values=("LosAngeles","1000"))# 
# tree.insert("",index=END,text="California",values=("LosAngeles"))# 缺少信息
tree.insert("",index=END,text="Tokyo",values=("Houston","900"))# 信息正常
tree.pack()

root.mainloop()

输出:

Tkinter Treeview的基本概念

由上述执行结果下面再次强调insert()方法的用法。

(1)text:设置图标栏的内容。

(2)values:设置一般栏位的内容,values=("芝加哥","800"),这是以顺序方式设置栏位,“芝加哥”是第一个栏位,“800”是第二个栏位。

其实当我们了解上述values参数内容后,也可以将Python的列表应用于建立栏位内容。

示例5

使用列表方式建立栏位内容,读者应该学习第8~10行设置列表内容,以及第18~20行将列表应用在insert( )方法的values参数。

from tkinter import *
from tkinter.ttk import *

root = Tk()
root.title("apidemos.com")

tuple1 = ("Chicago","800")              # 以元组方式设置栏内容     
list2 = ["LosAngeles","1000"]             # 以列表方式设置栏内容
list3 = ["Houston","900"]                # 以列表方式设置栏内容
# 建立Treeview
tree = Treeview(root,columns=("cities","populations"))
# 建立栏标题
tree.heading("#0",text="State") # 图标栏
tree.heading("#1",text="City")
tree.heading("#2",text="Populations")
# 建立内容
tree.insert("",index=END,text="Eleanor",values=tuple1) # 也可以使用元组代替
tree.insert("",index=END,text="California",values=list2)
tree.insert("",index=END,text="Tokyo",values=list2)
tree.pack()

root.mainloop()

输出:

Tkinter Treeview的基本概念

上述程序使用列表建立insert( )方法的values参数内容,也可以使用元组代替,具有相同效果。

赞(4)
未经允许不得转载:极客笔记 » Tkinter Treeview的基本概念

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
Tkinter入门
tkinter 简介tkinter 建立空白窗口tkinter 窗口属性的设置tkinter 窗口位置设置Tkinter Widget的command参数
Tkinter选项按钮与复选框
tkinter 选项按钮与复选框
Tkinter 文本框Entry
Tkinter 使用eval计算数学表达式
Tkinter 变量
Tkinter 变量类别的基本概念Tkinter 变量 get()与set()Tkinger 变量追踪trace()使用w模式Tkinter 变量追踪trace()使用r模式Tkinter trace()方法调用的callback方法参数Tkinter 变量实例:计算器
Tkinter 选项按钮Radiobutton
Tkinter Radiobutton教程Tkinter 将字典应用在Radiobutton上Tkinter 盒子选项按钮Tkinter 建立含图像的Radiobutton
Tkinter 复选框Checkbutton
Tkinter Checkbutton复选框Tkinter Checkbutton示例 - 简单编辑程序的应用
Tkinter 框架Frame
Tkinter Frame 框架的基本概念Tkinter 在Frame内创建WidgetTkinter Frame relief属性Tkinter Frame中创建复选框Tkinter Frame对relief属性的额外支持Tkinter 标签框架LabelFrameTkinter 在标签框架中添加复选框Tinker 顶层窗口ToplevelTkinter 使用Toplevel窗口仿真对话框
Tkinter Scale
Tkinter Scale的基本概念Tkinter 取得与设置Scale的尺度值Tkinter 使用Scale设置窗口背景颜色Tkinter colorchooser askcolor()方法Tkinter 容器与Scale综合应用
Tkinter Spinbox
Tkinter Spinbox控件基本概念Tkinter Spinbox get方法Tkinter 以序列存储Spinbox的数值数据Tkinter Spinbox使用非数值数据
Tkinter Message
Tkinter Message的基本概念Tkinter Message 使用字符串变量处理text参数Tkinter Messagebox教程
Tkinter 事件
Tkinter 事件绑定Tkinter 鼠标绑定的基本应用Tkinter 键盘绑定的基本应用Tkinter 键盘与鼠标事件绑定的陷阱Tkinter 取消绑定Tkinter 一个事件绑定多个事件处理程序Tkinter Protocols
Tkinter ListBox
Tkinter 建立列表框Tkinter ListBox insert()方法Tkinter Listbox的基本操作Tkinter ListBox选项数量size()Tkinter ListBox 选取特定索引项selection_set()Tkinter ListBox 删除特定索引项delete()Tkinter ListBox 传回指定的索引项get()Tkinter ListBox 传回所选取项目的索引curselection()Tkinter 检查ListBox指定索引项是否被选取Tkinter ListBox 虚拟绑定应用于单选Tkinter ListBox 虚拟绑定应用于多选Tkinter ListBox加入与删除项目Tkinter Listbox项目的排序Tkinter 拖曳Listbox中的项目Tkinter 滚动条的设计
Tkinter 下拉式列表
Tkinter 下拉式列表OptionMenuTkinter 使用元组建立OptionMenu列表项目Tkinter OptionMenu建立默认选项Tkinter OptionMenu 获得选项内容
Tkinter 组合框
Tkinter 组合框ComboboxTikinter Combobox设置默认选项Tkinter Combobox获得目前选项Tkinter 绑定Combobox
Tkinter 面板
Tkinter PanedWindow基本概念Tkinter PanedWindow 插入子控件Tkinter PanedWindow 建立LabelFrame当作子对象Tkinter PanedWindow weight参数Tkinter 在PanedWindow内插入不同控件
Tkinter Notebook
Tkinter Notebook基本概念Tkinter Notebook 绑定选项卡与子控件内容
Tkinter 进度条
Tkinter Progressbar的基本应用Tkinter Progressbar动画设计Tkinter Progressbar start/step/stop 方法Tkinter Progressbar indeterminate模式
Tkinter 菜单
Tkinter 菜单Menu设计的基本概念Tkinter Menu tearoff参数Tkinter Menu 菜单列表间加上分隔线Tkinter Menu 建立多个菜单的应用Tkinter Menu Alt快捷键Tkinter Menu Ctrl+快捷键Tkinter Menu 建立子菜单Tkinter Menu 建立弹出式菜单Tkinter Menu add_checkbuttonTkinter Menu 建立工具栏Toolbar
Tkinter 文字区域
Tkinter 文字区域Text的基本概念Tkinter Text 插入文字Tkinter Text加上滚动条Scrollbar设计Tkinter Text family参数Tkinter Text weight参数Tkinter Text size参数Tkinter Text 选取文字Tkinter 认识Text的索引Tkinter Text 建立书签Tkinter Text标签Tkinter Text Cut/Copy/Paste功能Tkinter Text 复原与重复Tkinter Text 查找文字Tkinter Text 拼写检查Tkinter Text 存储Text控件内容Tkinter Text 新建文档Tkinter 打开文档Tkinter 默认含滚动条的ScrolledText控件Tkinter Text 插入图像
Tkinter Treeview
Tkinter Treeview的基本概念Tkinter 格式化Treeview栏位内容Tkinter Treeview 建立不同颜色的行内容Tkinter 建立层级式的TreeviewTkinter Treeview 插入图像Tkinter Treeview Selection选项发生与事件触发Tkinter Treeview 删除项目Tkinter Treeview 插入项目Tkinter Treeview 双击某个项目Tkinter Treeview绑定滚动条Tkinter Treeview 排序
Tkinter Canvas
Tkinter Canvas 绘制线条Tkinter Canvas 绘制矩形Tkinter Canvas 绘制圆弧Tkinter Canvas 绘制圆或椭圆Tkinter Canvas 绘制多边形Tkinter Canvas 输出文字Tkinter Canvas 更改画布背景颜色Tkinter Canvas 插入图像Tkinter Canvas 鼠标拖曳绘制线条Tkinter Canvas 基本动画Tkinter Canvas 多个球移动的设计Tkinter Canvas 将随机数应用于多个球体的移动Tkinter Canvas 消息绑定Tkinter Canvas 设计球往下移动Tkinter Canvas 设计让球上下反弹Tkinter Canvas 设计让球在画布四面反弹Tkinter Canvas 建立球拍Tkinter Canvas 设计球拍移动Tkinter Canvas 球拍与球碰撞的处理Tkinter Canvas 实现反弹球设计游戏