treeview控件使用详解python_python Treeview使用笔记 1

先贴代码,python2.7

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import ttk

from Tkinter import *

class tktree(object):

def __init__(self,tks):

self.tks=tks

self.pidlist={}

##清空位置ID列表

def clearpidlist(self):

self.pidlist = {}

##创建滚动条模块

def mkscrollbar(self,tk,x=0,y=0,width=0,height=0,orient=None):

sc1=ttk.Scrollbar(tk,orient=orient)

sc1.place(x=x,y=y,width=width,height=height)

return sc1

##创建tree表的模块,可以选择格式:tree 或者 headings,以及加载滚动条,添加列,固定控件位置,并返回控件指针

def mktreeview(self,tk=0,x=0,y=0,width=0,height=0,show='tree',columns=[],yscroll=None,xscroll=None):

treecol=lambda col:[ i[0] for i in col ]

xw=0

yh=0

tr1=ttk.Treeview(tk,columns=treecol(columns),show=show)

for i in columns:

tr1.column(i[0],width=i[1],anchor='center')

tr1.heading(i[0],text=i[0])

if yscroll=='Y':

xw=16

yscr=self.mkscrollbar(tk,x=x+width-xw,y=y,width=xw,height=height)

tr1['yscrollcommand']=yscr.set

yscr.config(command=tr1.yview)

else:

pass

if xscroll=='Y':

yh=16

xscr=self.mkscrollbar(tk,x=x,y=y+height-yh,width=width-xw,height=yh,orient=HORIZONTAL)

tr1['xscrollcommand']=xscr.set

xscr.config(command=tr1.xview)

else:

pass

tr1.place(x=x,y=y,width=width-xw,height=height-yh)

return tr1

def inserttree(self,objs, trees, pid='', flag=0):

flags = flag

if isinstance(objs, dict) is True:

for i in objs:

ppid = self.inserttree(i, trees, pid, flag=flags)

flags = flags + 1

self.inserttree(objs[i], trees, ppid, flag=0)

elif isinstance(objs, list) is True or isinstance(objs, tuple) is True or isinstance(objs, set) is True:

k = 0

for i in objs:

self.inserttree(i, trees, pid, flag=k)

k = k + 1

else:

ppid = trees.insert(pid, flags, '%s_%d' % (pid, flags), text=objs)

self.pidlist[ppid]=objs

return ppid

def inserttable(self,objs,trees,pid='',flag=0):

if isinstance(objs,dict) is True:

flags=flag

for i in objs:

pidd=trees.insert(pid,flags,values=objs[i])

self.pidlist[pidd]=i

flags=flags+1

def printchoose1(event):

tree1.item(tree1.selection(),values=tree1.selection())

def printchoose2(event):

print tree2.index(tree2.selection())

def doublecell(event): ##输出鼠标右击位置的内容。

print tree2.item(tree2.identify_row(event.y),'values')[int(tree2.identify_column(event.x).split('#')[1])-1]

tkt=Tk()

tkt.geometry('700x800+800+200')

tkt.resizable(width=False,height=False)

mktr=tktree(tkt)

data1={'a':'b','c':[1,2,3,4,5,6,{7:8},{9:10,11:[12,13,14,15,16]}],'d':{'e':'f','g':{'h':'i','j':['k','l','m','n']}},'o':('p','q','r','s')}

tree1=mktr.mktreeview(tkt,x=10,y=10,width=300,height=600,show='tree',columns=[('VALID',60)],yscroll='Y',xscroll='Y') ##建立属性表

tree1.bind('',printchoose1) ##单击事件响应

mktr.inserttree(data1,tree1) ##将数据写入树形表中。

print mktr.pidlist ##依次打印树形表中的各个节点元素的位置ID列表

mktr.clearpidlist()

data2_head=[('IDS',30),('NAMES',100),('SEX',30),('AGE',30)]

data2_data={1:('0001','ASDDFASAD','F',30),2:('0002','DFTTGFSFD','M',30),3:('0003','JGHDRFDCDXX','M',30),

4:('0004','DFFGDRFSAD','M',30),5:('0005','YHBCX','M',30),6:('0006','DFTTGFSFD','F',30)}

tree2=mktr.mktreeview(tkt,x=320,y=10,width=300,height=600,columns=data2_head,xscroll='Y',show='headings') ##建立属性表

tree2.bind('',printchoose2) ##添加左击事件

tree2.bind('',doublecell) ##添加右击事件

mktr.inserttable(data2_data,tree2)

print mktr.pidlist

tkt.mainloop()

截图图下

功能:class 中实现了滚动控件创建、treeview控件创建、treeview数据写入 模块的集成

创建滚动条和创建treeview可以有一行脚本实现与控制。

在给tree写入数据时,分两种情形:

一种是 给树形tree中添加元素,show='headings',引用 inserttree 即可

另一种是 给 表格型tree中写数据,show='tree',引用 inserttable 即可。

另外下面增加了python 的事件触发脚本。尚不成熟。

希望对大家有用!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python中的treeview控件是一种用于显示层次结构数据的控件,通常用于显示文件系统、目录结构、数据库表格等。它可以让用户通过展开和折叠节点来浏览数据,同时也支持对节点进行增删改查等操作。 使用treeview控件需要先导入tkinter模块中的ttk子模块,然后创建一个treeview对象,并设置其列名、列宽、列对齐方式等属性。接着可以通过insert方法向treeview中添加节点,也可以通过delete方法删除节点,通过item方法获取节点信息,通过set方法修改节点的值等。 在使用treeview控件时,还可以设置节点的样式、颜色、字体等属性,以及绑定事件处理函数,实现更加丰富的交互效果。同时,还可以通过treeview的tag属性来对节点进行分组,方便对不同类型的节点进行批量操作。 总之,treeview控件Python GUI编程中非常实用的一个控件,掌握其使用方法可以帮助我们更加高效地开发各种应用程序。 ### 回答2: Python Treeview控件是TKinter GUI开发工具包中的一种控件。它主要用于显示和编辑带有层次结构的数据,如文件目录、网站导航菜单等。下面是Python Treeview控件使用详解。 1. 导入模块 在使用Treeview控件前,首先需要导入TKinter模块。代码如下: ``` import tkinter as tk from tkinter import ttk ``` 2. 创建Treeview控件 通过使用ttk.Treeview()构造函数来创建一个Treeview控件。代码如下: ``` tree = ttk.Treeview(root) ``` 其中root是TK根窗口。默认情况下,Treeview控件是不显示的,需要通过pack()或grid()方法将其放置在窗口中。 3. 添加列 在Treeview控件中,需要添加列来显示数据。使用heading()方法定义表头。代码如下: ``` tree["columns"] = ("name", "age", "gender") tree.heading("#0", text="ID") tree.heading("name", text="Name") tree.heading("age", text="Age") tree.heading("gender", text="Gender") ``` 其中,#0列是默认的一列,可以通过text参数设置列的标题。 4. 添加数据 在创建Treeview控件后,需要向其中添加数据。使用insert()方法添加一行数据。代码如下: ``` tree.insert("", "end", text="001", values=("John Doe", 30, "Male")) tree.insert("", "end", text="002", values=("Jane Smith", 25, "Female")) tree.insert("", "end", text="003", values=("Tom Brown", 40, "Male")) ``` 其中,第一个参数是父节点的ID。如果是根节点,则为空字符串。第二个参数是插入位置。如果是“end”,则表示在当前父节点的末尾插入。text参数用于设置节点的标题。 5. 节点之间的关系 Treeview控件可以显示节点之间的父子关系。使用insert()方法添加节点时,可以通过设置parent参数来指定它的父节点。代码如下: ``` tree.insert("", "end", text="001", values=("John Doe", 30, "Male")) tree.insert("001", "end", text="010", values=("David Lee", 18, "Male")) tree.insert("001", "end", text="011", values=("Amy Wang", 21, "Female")) ``` 其中,第一个节点“001”是根节点,第二个节点“010”和第三个节点“011”是其子节点。 6. 选择节点和事件处理 可以使用selection()方法获取当前选中的节点。可以使用bind()方法为Treeview控件绑定事件处理函数。代码如下: ``` def show_details(event): item = tree.selection()[0] print(tree.item(item)["values"]) tree.bind("<<TreeviewSelect>>", show_details) ``` 在此示例中,当用户单击Treeview控件中的任何节点时,show_details()方法将被调用。它获取当前选中的节点并打印其值。 7. 修改节点 可以使用item()方法修改节点的值。代码如下: ``` item = tree.selection()[0] tree.item(item, values=("Peter Li", 35, "Male")) ``` 在此示例中,选中的节点的值被修改为Peter Li、35、Male。 总之,Python Treeview控件是TKinter GUI开发工具包中的一种非常有用的控件,可用于显示和编辑树形结构数据。本文详细介绍了Python Treeview控件使用方法,包括创建控件、添加表头和数据、节点之间的关系、事件处理和修改节点。当你需要在Python应用程序中显示和编辑树形结构数据时,可以考虑使用Treeview控件。 ### 回答3: TreeView控件Python GUI程序中非常常用的一种控件,其主要用于显示和管理树状数据结构。TreeView控件通常分为两个部分,一个是树的展示部分,另一个是与树相关的操作部分。Python的Tkinter库中就提供了TreeView控件TreeView控件最基本的用法就是树状数据的展示。首先我们需要创建一个TreeView对象,然后向其添加根结点,接着在根结点下添加子结点。例如: ``` from tkinter import * from tkinter import ttk root = Tk() tree = ttk.Treeview(root) tree.pack() tree.insert('', '0', 'root1', text='Root 1') tree.insert('', '1', 'root2', text='Root 2') tree.insert('root1', '0', 'child1', text='Child 1') tree.insert('root2', '0', 'child2', text='Child 2') root.mainloop() ``` 上述代码创建了一个空的TreeView对象,并向其添加了两个根结点——root1和root2。其中''代表父结点为空,即为根结点;'0'代表插入时插入到父结点的第0个位置。 我们还可以在添加结点时添加更多的属性,例如: ``` tree.insert('root1', '1', 'child2', text='Child 2', values=('1', '2', '3')) ``` 上述代码在root1结点下插入了一个名为Child 2的结点,并传入一个tuple作为values属性,在TreeView控件中会以表格的形式展示。同时也可以通过set方法修改values属性。 TreeView控件还可以绑定事件,例如双击事件,单击事件等,通过bind方法实现。例如: ``` def onclick(event): item = tree.selection()[0] print(tree.item(item,"text")) tree.bind('<ButtonRelease-1>', onclick) ``` 上述代码定义了一个onclick函数,并将其绑定在tree对象上。当单击TreeView控件,释放鼠标左键时触发此函数,它将获取当前被选中的item的文本信息。 当然,我们还可以对TreeView控件进行更多的修改,例如改变字体,背景颜色,边颜色等。例如: ``` style = ttk.Style() style.configure("mystyle.Treeview", font=('Arial', 12), foreground='red') style.configure("mystyle.Treeview.Heading", font=('Arial', 14), foreground='blue', background='yellow') tree.configure(style="mystyle.Treeview") ``` 上述代码定义了一个名为mystyle的样式,将字体设置成Arial,字号设置成12,前景色设置成红色。接着又设置了一个mystyle.Treeview.Heading的样式,将字体设置成Arial,字号设置成14,前景色设置成蓝色,背景色设置成黄色。最后将tree对象的样式设置成mystyle.Treeview。 以上便是PythonTreeView控件的基本用法和部分常用功能的解释。当然,Treeview控件的应用还有更加丰富的用法和功能,需要开发者通过实践进行学习和掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值