【问题标题】:Show csv data in table using python使用python在表格中显示csv数据
【发布时间】: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


【解决方案1】:

谢谢 acw1668。 使用元组的问题就解决了。

现在如何插入行号?

【讨论】:

  • tree.insert(...) 中添加text=i+1 并在创建Treeview 时将show='headings' 更改为show='tree headings'
  • 谢谢。如何用线条分隔每一行?现在我正在使用标签来分隔结果图像中的行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 2018-06-03
  • 1970-01-01
相关资源
最近更新 更多