1、TreeView介紹python
TreeView組件是一個樹狀結構和表格的結合體。第一列是樹狀結構,後幾列是列表。每一行表示一個item,樹的item能夠分級,每一個item有子item,名稱對應text標籤。每一行的值用values元組裏的值表示。函數
item有5個標籤,分別是:text,image,values,open,tags。oop
2、參數說明字體
一、TreeView參數:spa
參數 | 做用 |
---|---|
columns | 值是一個列表。列表裏每一個元素表明一個列標識符的名稱。列表的長度爲列的長度。 |
displaycolumns | 列表,這裏的元素是列表符,表示的是哪些列能夠顯示以及順序,或者用‘#all’表示所有顯示 |
height | 表示要顯示幾行數據(注意:這個部件的寬度是根據列的多少自動定義的) |
padding | 填充,是個最多4個元素的列表 |
selectmode | 定義如何去選擇一行。"extended"是可選多行(用Ctrl+鼠標), 「browse」 是隻能選一行, 「none"是不能改變選擇,默認是"extended」 |
show | 表示這個部件顯示哪一種功能,「tree」表示僅顯示第一列(單樹模式),「headings」表示顯示除一列的其餘列(單列表模式),默認是"tree headings",顯示全部列。注意,‘#0’(第一列)是永遠存在的 |
二、item參數:blog
選項 | 描述 |
---|---|
text | 樹狀結構這邊的名稱。 |
image | 樹狀結構這邊的名稱的左邊加個圖。 |
values | 列表結構這邊每一行的值,values未賦值的列會爲空值,超過列的長度會被截斷。 |
open | 布爾值,表明子item的顯示打開或關閉 |
tags | 與item關聯的標記 |
三、tag參數事件
選項 | 描述 |
---|---|
foreground | 前景色 |
background | 背景色 |
font | 字體 |
image | 圖 |
3、TreeView可選事件和方法get
<< TreeviewSelect>>,表明選擇變化是發生;
<< TreeviewOpen>>,item的open=True時發生
<< TreeviewClose>>,item的open=False時發生回調函數
提示:可用 Treeview.focus() 和 Treeview.selection() 可獲取 item 或 items.it
方法列表:
bbox(item, column=None)
返回一個item的範圍(x,y,width, height),若是column指定了一個列,則返回一個元素範圍,若是item不可視,則返回空值。
get_children(item=None)
返回一個item的全部子item,這個子item是一個列表形式,若是item沒指定,則返回根目錄的item
set_children(item, *newchildren)
設置一個item的新子item。這裏設置了以後實際是所有替換
column(column, option=None, **kw)
給各列設置屬性,或返回屬性。
第一個column是列標識符
第二個option,若是不設置則返回全部屬性的字典,若是設置則返回那個屬性的值。
kw裏的option有5個
id:只讀屬性,返回列名。
anchor:文字在cell裏的對齊方式,標準的tk的anchor屬性
minwidth: 值,單位是像素,列的最小寬度
stretch: 布爾值,表示列的寬度是否隨整個部件的改動而變化。
width:列寬,單位是像素。
提示:若是要設置樹狀結構那列,用column=「#0」
delete(*items)
刪除item及其子item
detach(*items)
斷開item及其子item,這裏的斷開只是不顯示,之後還能夠連接起來。
exists(item)
返回True,若是item在樹裏。
focus(item=None)
若是不指定item,則返回當前得到焦點的item,若是指定item,則讓該item得到焦點。若無則返回空值。
heading(column, option=None, **kw)
查詢或修改指定列的標題選項
第一個column是列標識符
第二個option,若是不設置則返回全部屬性的字典,若是設置則返回那個屬性的值。
kw裏的option有4個
text:列頭名
image: 列頭名右的圖像
anchor:文字在heading裏的對齊方式,標準的tk的anchor屬性
command:點擊列頭的回調函數
insert(parent, index, iid=None, **kw)
建立新item並返回新建立item的項標識符。
parent:用item ID表示父item,或者‘’表示根item
index:數值int,或‘end’,表示item插入的位置
iid:item標識符,可自動生成
kw:看上面的Item Options介紹。
item(item, option=None, **kw)
查詢或修改指定item的選項
selection(selop=None, items=None)
若是沒指定selop則返回全部選中的items,列表形式,若selop指定了selection methods,則相應act。
set(item, column=None, value=None)
指定item,若是不設定column和value,則返回他們的字典,若是設定了column,則返回該column的value,若是value也設定了,則做相應更改。
4、代碼示例
一、表格代碼:
import tkinter as tk from tkinter import ttk window = tk.Tk() # 設置窗口大小 winWidth = 600 winHeight = 400 # 獲取屏幕分辨率 screenWidth = window.winfo_screenwidth() screenHeight = window.winfo_screenheight() x = int((screenWidth - winWidth) / 2) y = int((screenHeight - winHeight) / 2) # 設置主窗口標題 window.title("TreeView參數說明") # 設置窗口初始位置在屏幕居中 window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y)) # 設置窗口圖標 window.iconbitmap("./image/icon.ico") # 設置窗口寬高固定 window.resizable(0, 0) # 定義列的名稱 columns = ("name", "gender", "age") tree = ttk.Treeview(window, show = "headings", columns = columns, selectmode = tk.BROWSE) # 設置表格文字居中 tree.column("name", anchor = "center") tree.column("gender", anchor = "center") tree.column("age", anchor = "center") # 設置表格頭部標題 tree.heading("name", text = "姓名") tree.heading("gender", text = "性別") tree.heading("age", text = "年齡") # 設置表格內容 lists = [{"name": "yang", "gender": "男", "age": "18"}, {"name": "鄭", "gender": "女", "age": "25"}] i = 0 for v in lists: tree.insert('', i, values = (v.get("name"), v.get("gender"), v.get("age"))) i += 1 tree.pack(expand = True, fill = tk.BOTH) # 獲取當前點擊行的值 def treeviewClick(event): # 單擊 for item in tree.selection(): item_text = tree.item(item, "values") print(item_text) # 鼠標左鍵擡起 tree.bind('<ButtonRelease-1>', treeviewClick) # 鼠標選中一行回調 def selectTree(event): for item in tree.selection(): item_text = tree.item(item, "values") print(item_text) # 選中行 #tree.bind('<<TreeviewSelect>>', selectTree) window.mainloop()
二、樹狀代碼:
import tkinter as tk from tkinter import ttk window = tk.Tk() # 設置窗口大小 winWidth = 600 winHeight = 400 # 獲取屏幕分辨率 screenWidth = window.winfo_screenwidth() screenHeight = window.winfo_screenheight() x = int((screenWidth - winWidth) / 2) y = int((screenHeight - winHeight) / 2) # 設置主窗口標題 window.title("TreeView參數說明") # 設置窗口初始位置在屏幕居中 window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y)) # 設置窗口圖標 window.iconbitmap("./image/icon.ico") # 設置窗口寬高固定 window.resizable(0, 0) # 定義列的名稱 tree = ttk.Treeview(window, show = "tree") myid=tree.insert("",0,"中國",text="中國China",values=("1")) # ""表示父節點是根 myidx1=tree.insert(myid,0,"廣東",text="中國廣東",values=("2")) # text表示顯示出的文本,values是隱藏的值 myidx2=tree.insert(myid,1,"江蘇",text="中國江蘇",values=("3")) myidy=tree.insert("",1,"美國",text="美國USA",values=("4")) myidy1=tree.insert(myidy,0,"加州",text="美國加州",values=("5")) # 鼠標選中一行回調 def selectTree(event): for item in tree.selection(): item_text = tree.item(item, "values") print(item_text) # 選中行 tree.bind('<<TreeviewSelect>>', selectTree) tree.pack(expand = True, fill = tk.BOTH) window.mainloop()
5、效果圖