python tkinter用Treeview实现ListView效果

先上图

再上代码:

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()

  

posted @ 2014-12-10 17:48  tommy.yu  阅读(36244)  评论(3编辑  收藏  举报