先上圖

再上代碼:
import ttk
from Tkinter import *
root = Tk()
tree = ttk.Treeview(root, columns=('col1','col2','col3'))
tree.column('col1', width=100, anchor='center')
tree.column('col2', width=100, anchor='center')
tree.column('col3', width=100, anchor='center')
tree.heading('col1', text='col1')
tree.heading('col2', text='col2')
tree.heading('col3', text='col3')
def onDBClick(event):
item = tree.selection()[0]
print "you clicked on ", tree.item(item, "values")
for i in range(10):
tree.insert('',i,values=('a'+str(i),'b'+str(i),'c'+str(i)))
tree.bind("<Double-1>", onDBClick)
tree.pack()
root.mainloop()
說點啥:
- ttk貌似是python自帶的。
- Treeview本質上是一棵樹。
- 以上是弱化版,也就是我們通常見到的listview
- 支持事件的綁定,通過tree.bind配合tree.item以及tree.selection()使用,可以針對單擊,雙擊等事件寫代碼。
關於滾動條:
注意,滾動條是一個控件,而不是treeview的一個屬性!
添加滾動條示例代碼如下(其中水平滾動條是不會起作用的,原因參考這里):
# -*- coding:utf-8-*-
from Tkinter import *
import ttk
root = Tk()
root.geometry("800x600")
tv = ttk.Treeview(root, height =10,columns=('c1','c2','c3'))
for i in range(1000):
tv.insert('',i,values=('a'+str(i),'b'+str(i),'c'+str(i)))
tv.pack()
#----vertical scrollbar------------
vbar = ttk.Scrollbar(root,orient=VERTICAL,command=tv.yview)
tv.configure(yscrollcommand=vbar.set)
tv.grid(row=0,column=0,sticky=NSEW)
vbar.grid(row=0,column=1,sticky=NS)
#----horizontal scrollbar----------
hbar = ttk.Scrollbar(root,orient=HORIZONTAL,command=tv.xview)
tv.configure(xscrollcommand=hbar.set)
hbar.grid(row=1,column=0,sticky=EW)
root.mainloop()
