python tkinter用Treeview实现ListView效果

本文展示了如何使用Python的Tkinter库中的Treeview组件来创建ListView的效果。Treeview本质上是一个树形结构,但在弱化状态下可以作为ListView使用。支持事件绑定,如单击和双击,可以通过tree.bind与其他方法结合实现。滚动条需额外添加,注意它是一个独立的控件,而非Treeview的一部分。文中提供了一个添加滚动条的代码示例。

先上图

再上代码:

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

  

转载于:https://www.cnblogs.com/Tommy-Yu/p/4156014.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值