【发布时间】:2020-01-21 08:11:15
【问题描述】:
如何在 Tkinter 树视图中手动显示 CSV 文件数据?
在这里,我尝试使用树视图显示 CSV 文件数据。要在 tkinter 中手动插入数据,请使用以下命令:
tree.insert('', 'end', values = (val[sorted(j for j in range(k[1]))]),tag = 'gray')
使用它,我在 GUI 上得到括号,并且时间戳列已分开。
使用时
tree.insert('', 'end', values = (val[0],val[1],val[2],val[3],val[4],val[5],val[6],val[7],val[8],val[9],val[10],val[11],val[12],val[13],val[14],val[15]),tag = 'gray')
我没有得到任何括号,并且时间戳列没有分开。
为什么会这样?请提出建议。
from tkinter import *
from tkinter import ttk
import pandas as pd
from tkinter import filedialog
from tkinter.filedialog import askopenfile
root = Tk()
root.geometry("1500x200")
data = []
file = ('E:\\PYTHON\\data transfer\\shiva new\\100lines.csv')
csv_data = pd.read_csv(file)
k = csv_data.shape
print(k)
values = csv_data.values
columns = csv_data.columns
frame = Frame(root,height=500,width=500)
frame.pack(fill='both',expand=1)
tree = ttk.Treeview(frame, columns = (sorted(col for col in range(1,k[1]+2))),height = 2, show = "headings")
print(tree['columns'])
tree.pack(side = 'left',fill='both',expand=1)
scroll1 = Scrollbar(frame, orient="vertical", command=tree.yview)
scroll1.pack(side = 'right', fill = 'y')
tree.configure(yscrollcommand=scroll1.set)
scroll2 = Scrollbar(root, orient="horizontal", command=tree.xview)
scroll2.pack(side = 'bottom', fill = 'x')
tree.configure(xscrollcommand=scroll2.set)
for i in range(1,k[1]+2):
print(i)
tree.heading(i, text=i)#(k for k in range(k[1]))
tree.column(i, width = 80)
for i,val in enumerate(values):
i1 = i%2
if (i1==0):
tree.insert('', 'end', values = (val[sorted(j for j in range(k[1]))]),tag = 'gray')
#tree.insert('', 'end', values = (val[0],val[1],val[2],val[3],val[4],val[5],val[6],val[7],val[8],val[9],val[10],val[11],val[12],val[13],val[14],val[15]),tag = 'gray')
else:
tree.insert('', 'end', values = (val[0],val[1],val[2],val[3],val[4],val[5],val[6],val[7],val[8],val[9],val[10],val[11],val[12],val[13],val[14],val[15]))
#tree.insert('', 'end', values = (val[sorted(j for j in range(k[1]))]))
tree.tag_configure('gray', background='#cccccc')
root.mainloop()
【问题讨论】:
-
第一个将
ndarray分配给values,而第二个将tuple分配给values。尝试将第一个更改为values=tuple(val[...])。 -
我可以看到以下输出:
print(val[sorted(j for j in range(k[1]))])
标签: python pandas tkinter treeview