当前位置:   article > 正文

Python—tkinter的Treeview实现带滚动条的表格(附带排序)_pandastable与treeview

pandastable与treeview

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

这里pack方案网上也有,但是grid方案是我自己研究出来的。因为实际去搞布局,grid还是用的最多的。
注意grid里面的sticky='ns’就是上下填充的意思,和pack的fill='y’是一个效果。

这里包含了两个特效,一个是滚动条。一个是点击一行,这一行的第一个数据被自动复制到粘贴板。

效果如图
在这里插入图片描述

更多的treeview的玩法,我看这个也不错:
https://blog.csdn.net/sinat_27382047/article/details/80161637

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/975538
推荐阅读
相关标签
  

闽ICP备14008679号