How to show csv file in a grid?
You can use reader from the python csv module to read the file. Reader takes a .csv file as input, and can then be iterated over like a table. I've included code, a sample .csv file, and my result.
Code:
import tkinterimport csvroot = tkinter.Tk()# open filewith open("test.csv", newline = "") as file: reader = csv.reader(file) # r and c tell us where to grid the labels r = 0 for col in reader: c = 0 for row in col: # i've added some styling label = tkinter.Label(root, width = 10, height = 2, \ text = row, relief = tkinter.RIDGE) label.grid(row = r, column = c) c += 1 r += 1root.mainloop()
CSV File:
col1,col2,col3thing1,thing2,thing3hi,hey,hello
Result:
Instead of Label use treeview like this, it will be more efficient.
from tkinter import *import tkinter.ttk as ttkimport csvroot = Tk()root.title("Python - Import CSV File To Tkinter Table")width = 500height = 400screen_width = root.winfo_screenwidth()screen_height = root.winfo_screenheight()x = (screen_width / 2) - (width / 2)y = (screen_height / 2) - (height / 2)root.geometry("%dx%d+%d+%d" % (width, height, x, y))root.resizable(0, 0)TableMargin = Frame(root, width=500)TableMargin.pack(side=TOP)scrollbarx = Scrollbar(TableMargin, orient=HORIZONTAL)scrollbary = Scrollbar(TableMargin, orient=VERTICAL)tree = ttk.Treeview(TableMargin, columns=("Employye ID", "Name", "Date",'Registration Time'), height=400, selectmode="extended", yscrollcommand=scrollbary.set, xscrollcommand=scrollbarx.set)scrollbary.config(command=tree.yview)scrollbary.pack(side=RIGHT, fill=Y)scrollbarx.config(command=tree.xview)scrollbarx.pack(side=BOTTOM, fill=X)tree.heading('Employye ID', text="Employye ID", anchor=W)tree.heading('Name', text="Name", anchor=W)tree.heading('Date', text="Date", anchor=W)tree.heading('Registration Time', text="Time", anchor=W)tree.column('#0', stretch=NO, minwidth=0, width=0)tree.column('#1', stretch=NO, minwidth=0, width=120)tree.column('#2', stretch=NO, minwidth=0, width=120)tree.column('#3', stretch=NO, minwidth=0, width=120)tree.column('#3', stretch=NO, minwidth=0, width=120)tree.pack()with open('./RegisteredEmployees/RegisteredEmployees.csv') as f: reader = csv.DictReader(f, delimiter=',') for row in reader: emp_id = row['Employye ID'] name = row['Name'] dt = row['Date'] ti = row['Registration Time'] tree.insert("", 0, values=(emp_id, name, dt,ti))root.mainloop()
I just initialize Treeview, the with csv module I read csv and insert column and rows data in treeview.
ResultSee the result here