赞
踩
tkinter的Treeview可以实现类似table的表格效果,如果和滚动条结合就更加完美了。结果反复探讨,实现的方式如下
from tkinter import * from tkinter.ttk import Treeview #排序函数 def tree_sort_column(tree,col,reverse): #Treeview、列名、排列方式 l = [(tree.set(k,col),k) for k in tree.get_children('')] l.sort(reverse=reverse) # 排序方式 for index,(val,k) in enumerate(l): # 根据排序后索引移动 tree.move(k, '', index) tree.heading(col,command=lambda:treeview_sort_column(tree,col,not reverse)) #点击复制到粘贴板 def treeviewclick(event,tree): window.clipboard_clear() strs="" for item in tree.selection(): item_text=tree.item(item,"values") strs+=item_text[0]+"\n" #获取本行的第一列的数据 window.clipboard_append(strs) window=Tk() window.geometry('200x450') cols = ("姓名", "IP地址") ybar=Scrollbar(window,orient='vertical') #竖直滚动条 tree=Treeview(window,show='headings',columns=cols,yscrollcommand=ybar.set) ybar['command']=tree.yview #表头设置 for col in cols: tree.heading(col,text=col,command=lambda col=col:tree_sort_column(tree,col,False)) #行标题 tree.column(col,width=80,anchor='w') #每一行的宽度,'w'意思为靠右 #插入数据 for i in range(1,500): tree.insert("","end",values=("john","1.1.1.1"+str(i))) tree.grid(row=0,column=0) #grid方案 ybar.grid(row=0,column=1,sticky='ns') tree.bind('<ButtonRelease-1>',lambda event:treeviewclick(event,tree)) #实现点击行的第一个数据复制到粘贴板 #ybar.pack(side='right',fill='y') #pack方案 #tree.pack(fill='x') window.mainloop()
这里pack方案网上也有,但是grid方案是我自己研究出来的。因为实际去搞布局,grid还是用的最多的。
注意grid里面的sticky='ns’就是上下填充的意思,和pack的fill='y’是一个效果。
这里包含了两个特效,一个是滚动条。一个是点击一行,这一行的第一个数据被自动复制到粘贴板。
效果如图
更多的treeview的玩法,我看这个也不错:
https://blog.csdn.net/sinat_27382047/article/details/80161637
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。