Skip to main content

how to add the data from list to the treeview in tkinter

 Here in this blog we are going to make the window where we can send all the data from the list to the treeview form.


here is the following codes

from tkinter import *
from tkinter import ttk
import sqlite3

root=Tk()
root.geometry("500x600")

#add some stylr
style=ttk.Style()
#Pick a theme
style.theme_use("default")

style.configure("Treeview",
                background="white",
                foreground="black",
                rowheight=25,
                fieldbackground="white")
#change selected colour
style.map('Treeview',background=[('selected','blue')])
#create treeview frame
tree_frame=Frame(root)
tree_frame.pack(pady=20)

#treeview scrollbar
tree_scroll=Scrollbar(tree_frame)
tree_scroll.pack(side=RIGHT,fill=Y)

#Create treeview
my_tree=ttk.Treeview(tree_frame,yscrollcommand=tree_scroll.set,selectmode="browse")
my_tree.pack()

#configure the scroll bar
tree_scroll.config(command=my_tree.yview)

#format our columns
my_tree['columns']=("Name","ID","Favourite Pizza")
my_tree.column("#0",width=0,stretch=NO)#stretch=NO means that if we give the width =0 than also if the white gap is shown over there than by the stretch it is being removed
my_tree.column("Name",anchor=W,width=140)
my_tree.column("ID",anchor=CENTER,width=100)
my_tree.column("Favourite Pizza",anchor=W,width=140)

#create headings
my_tree.heading("#0",text="",anchor=W)
my_tree.heading("Name",text="Name",anchor=W)
my_tree.heading("ID",text="ID",anchor=CENTER)
my_tree.heading("Favourite Pizza",text="Favourite Pizza",anchor=W)

data=[
    ["John",1,"Peperroni"],
    ["rahul",2,"Daal bhaat"],
    ["prince",3,"roti sabji"],
    ["anwar",4,"nenwa kaddu"],
    ["utpal",5,"raita"],
    ["John",1,"Peperroni"],
    ["rahul",2,"Daal bhaat"],
    ["prince",3,"roti sabji"],
    ["anwar",4,"nenwa kaddu"],
    ["utpal",5,"raita"],
    ["John",1,"Peperroni"],
    ["rahul",2,"Daal bhaat"],
    ["prince",3,"roti sabji"],
    ["anwar",4,"nenwa kaddu"],
    ["utpal",5,"raita"],
    ["John",1,"Peperroni"],
    ["rahul",2,"Daal bhaat"],
    ["prince",3,"roti sabji"],
    ["anwar",4,"nenwa kaddu"],
    ["utpal",5,"raita"],
    ["arun",6,"biryani"]
]
#create striped row tags
my_tree.tag_configure('oddrow',background="white")
my_tree.tag_configure('evenrow',background="light blue")

global count
count=0
for record in data:#this creates the loop within a data to get in the easier way
    if count % 2 == 0:
        my_tree.insert(parent='', index='end', iid=count, text="", values=(record[0],record[1],record[2]),tags=('evenrow'))
    else:
        my_tree.insert(parent='', index='end', iid=count, text="", values=(record[0], record[1], record[2]),
                       tags=('oddrow'))

    count += 1



""""#Add DAta
my_tree.insert(parent='',index='end',iid=0,text="",values=("John",1,"Peperroni"))
my_tree.insert(parent='',index='end',iid=1,text="",values=("rahul",2,"Daal bhaat"))
my_tree.insert(parent='',index='end',iid=2,text="",values=("prince",3,"roti sabji"))
my_tree.insert(parent='',index='end',iid=3,text="",values=("anwar",4,"nenwa kaddu"))
my_tree.insert(parent='',index='end',iid=4,text="",values=("utpal",5,"raita"))
my_tree.insert(parent='',index='end',iid=5,text="",values=("arun",6,"biryani"))
"""
#add child(my_tree.insert shows up the child in tree view it shows up like the plus size in it
#my_tree.insert(parent='',index='end',iid=6,text="Child",values=("arun",6,"biryani"))
#my_tree.move('6','0','0')




add_frame = Frame(root)
add_frame.pack(pady=20)
#adding label names
n1=Label(add_frame,text="Name")
n1.grid(row=0,column=0)

i1=Label(add_frame,text="ID")
i1.grid(row=0,column=1)

t1=Label(add_frame,text="Topping")
t1.grid(row=0,column=2)

#adding entry boxes

name_box=Entry(add_frame)
name_box.grid(row=1,column=0)

id_box=Entry(add_frame)
id_box.grid(row=1,column=1)

topping_box = Entry(add_frame)
topping_box.grid(row=1,column=2)



def add_record():
    global count
    if count % 2 == 0:
        my_tree.insert(parent='', index='end', iid=count, text="",
                       values=(name_box.get(), id_box.get(),topping_box.get()),tags=('evenrow'))
    else:
        my_tree.insert(parent='', index='end', iid=count, text="",
                       values=(name_box.get(), id_box.get(), topping_box.get()), tags=('oddrow'))
    count += 1
    #Clear the boxes
    name_box.delete(0,END)
    id_box.delete(0,END)
    topping_box.delete(0,END)

#remove all records
def remove_all():
    for record in my_tree.get_children():
        my_tree.delete(record)

#remove one selected
def remove_one():
    x=my_tree.selection()[0]
    my_tree.delete(x)

#def remove_many
def remove_many():
    x=my_tree.selection()
    for record in x:
        my_tree.delete(record)

def select_record(event):
    name_box.delete(0,END)
    id_box.delete(0,END)
    topping_box.delete(0,END)

    #GRAB RECORD NUMBER
    selected=my_tree.focus()
    #grab record values
    values=my_tree.item(selected,'values')
    #temp_label.config(text=values[0])
    #output to entry boxes
    name_box.insert(0,values[0])
    id_box.insert(0, values[1])
    topping_box.insert(0, values[2])

def update_record():
    selected=my_tree.focus()
    my_tree.item(selected,text="", values=(name_box.get(),id_box.get(),topping_box.get()))
    name_box.delete(0, END)
    id_box.delete(0, END)
    topping_box.delete(0, END)



#buttons
select_button=Button(root,text="Select Record",command=select_record)
select_button.pack()

update_button=Button(root,text="Update Record",command=update_record)
update_button.pack()

add_record=Button(root,text="Add Record",command=add_record)
add_record.pack()

#remove all
remove_all=Button(root,text="Remove all records",command=remove_all)
remove_all.pack()

#remove one
remove_one=Button(root,text="Remove One Record",command=remove_one)
remove_one.pack()

#remove many selected
remove_many=Button(root,text="remove many selected",command=remove_many)
remove_many.pack()

temp_label=Label(root,text="")
temp_label.pack()

my_tree.bind("<ButtonRelease-1>",select_record)

root.mainloop()from tkinter import *
from tkinter import ttk
import sqlite3

root=Tk()
root.geometry("500x600")

#add some stylr
style=ttk.Style()
#Pick a theme
style.theme_use("default")

style.configure("Treeview",
                background="white",
                foreground="black",
                rowheight=25,
                fieldbackground="white")
#change selected colour
style.map('Treeview',background=[('selected','blue')])
#create treeview frame
tree_frame=Frame(root)
tree_frame.pack(pady=20)

#treeview scrollbar
tree_scroll=Scrollbar(tree_frame)
tree_scroll.pack(side=RIGHT,fill=Y)

#Create treeview
my_tree=ttk.Treeview(tree_frame,yscrollcommand=tree_scroll.set,selectmode="browse")
my_tree.pack()

#configure the scroll bar
tree_scroll.config(command=my_tree.yview)

#format our columns
my_tree['columns']=("Name","ID","Favourite Pizza")
my_tree.column("#0",width=0,stretch=NO)#stretch=NO means that if we give the width =0 than also if the white gap is shown over there than by the stretch it is being removed
my_tree.column("Name",anchor=W,width=140)
my_tree.column("ID",anchor=CENTER,width=100)
my_tree.column("Favourite Pizza",anchor=W,width=140)

#create headings
my_tree.heading("#0",text="",anchor=W)
my_tree.heading("Name",text="Name",anchor=W)
my_tree.heading("ID",text="ID",anchor=CENTER)
my_tree.heading("Favourite Pizza",text="Favourite Pizza",anchor=W)

data=[
    ["John",1,"Peperroni"],
    ["rahul",2,"Daal bhaat"],
    ["prince",3,"roti sabji"],
    ["anwar",4,"nenwa kaddu"],
    ["utpal",5,"raita"],
    ["John",1,"Peperroni"],
    ["rahul",2,"Daal bhaat"],
    ["prince",3,"roti sabji"],
    ["anwar",4,"nenwa kaddu"],
    ["utpal",5,"raita"],
    ["John",1,"Peperroni"],
    ["rahul",2,"Daal bhaat"],
    ["prince",3,"roti sabji"],
    ["anwar",4,"nenwa kaddu"],
    ["utpal",5,"raita"],
    ["John",1,"Peperroni"],
    ["rahul",2,"Daal bhaat"],
    ["prince",3,"roti sabji"],
    ["anwar",4,"nenwa kaddu"],
    ["utpal",5,"raita"],
    ["arun",6,"biryani"]
]
#create striped row tags
my_tree.tag_configure('oddrow',background="white")
my_tree.tag_configure('evenrow',background="light blue")

global count
count=0
for record in data:#this creates the loop within a data to get in the easier way
    if count % 2 == 0:
        my_tree.insert(parent='', index='end', iid=count, text="", values=(record[0],record[1],record[2]),tags=('evenrow'))
    else:
        my_tree.insert(parent='', index='end', iid=count, text="", values=(record[0], record[1], record[2]),
                       tags=('oddrow'))

    count += 1



""""#Add DAta
my_tree.insert(parent='',index='end',iid=0,text="",values=("John",1,"Peperroni"))
my_tree.insert(parent='',index='end',iid=1,text="",values=("rahul",2,"Daal bhaat"))
my_tree.insert(parent='',index='end',iid=2,text="",values=("prince",3,"roti sabji"))
my_tree.insert(parent='',index='end',iid=3,text="",values=("anwar",4,"nenwa kaddu"))
my_tree.insert(parent='',index='end',iid=4,text="",values=("utpal",5,"raita"))
my_tree.insert(parent='',index='end',iid=5,text="",values=("arun",6,"biryani"))
"""
#add child(my_tree.insert shows up the child in tree view it shows up like the plus size in it
#my_tree.insert(parent='',index='end',iid=6,text="Child",values=("arun",6,"biryani"))
#my_tree.move('6','0','0')




add_frame = Frame(root)
add_frame.pack(pady=20)
#adding label names
n1=Label(add_frame,text="Name")
n1.grid(row=0,column=0)

i1=Label(add_frame,text="ID")
i1.grid(row=0,column=1)

t1=Label(add_frame,text="Topping")
t1.grid(row=0,column=2)

#adding entry boxes

name_box=Entry(add_frame)
name_box.grid(row=1,column=0)

id_box=Entry(add_frame)
id_box.grid(row=1,column=1)

topping_box = Entry(add_frame)
topping_box.grid(row=1,column=2)



def add_record():
    global count
    if count % 2 == 0:
        my_tree.insert(parent='', index='end', iid=count, text="",
                       values=(name_box.get(), id_box.get(),topping_box.get()),tags=('evenrow'))
    else:
        my_tree.insert(parent='', index='end', iid=count, text="",
                       values=(name_box.get(), id_box.get(), topping_box.get()), tags=('oddrow'))
    count += 1
    #Clear the boxes
    name_box.delete(0,END)
    id_box.delete(0,END)
    topping_box.delete(0,END)

#remove all records
def remove_all():
    for record in my_tree.get_children():
        my_tree.delete(record)

#remove one selected
def remove_one():
    x=my_tree.selection()[0]
    my_tree.delete(x)

#def remove_many
def remove_many():
    x=my_tree.selection()
    for record in x:
        my_tree.delete(record)

def select_record(event):
    name_box.delete(0,END)
    id_box.delete(0,END)
    topping_box.delete(0,END)

    #GRAB RECORD NUMBER
    selected=my_tree.focus()
    #grab record values
    values=my_tree.item(selected,'values')
    #temp_label.config(text=values[0])
    #output to entry boxes
    name_box.insert(0,values[0])
    id_box.insert(0, values[1])
    topping_box.insert(0, values[2])

def update_record():
    selected=my_tree.focus()
    my_tree.item(selected,text="", values=(name_box.get(),id_box.get(),topping_box.get()))
    name_box.delete(0, END)
    id_box.delete(0, END)
    topping_box.delete(0, END)



#buttons
select_button=Button(root,text="Select Record",command=select_record)
select_button.pack()

update_button=Button(root,text="Update Record",command=update_record)
update_button.pack()

add_record=Button(root,text="Add Record",command=add_record)
add_record.pack()

#remove all
remove_all=Button(root,text="Remove all records",command=remove_all)
remove_all.pack()

#remove one
remove_one=Button(root,text="Remove One Record",command=remove_one)
remove_one.pack()

#remove many selected
remove_many=Button(root,text="remove many selected",command=remove_many)
remove_many.pack()

temp_label=Label(root,text="")
temp_label.pack()

my_tree.bind("<ButtonRelease-1>",select_record)

root.mainloop()


Comments

Popular posts from this blog

How to add the treeview numbers to get the grand total in tkinter entry box

 in this blog we are going to know about the adding of the integers in the treeview and get the total in the entry box of tkinter so here is the image first so the coding to do such things are here as follow but here is the condition that pls make assured that the state of entry box is disabled.......      for child in my_tree1 . get_children ():         e2l . config ( state = "normal" )         b1 += float ( my_tree1 . item ( child , "values" )[ 3 ])         var2 . set ( b1 )         e2l . config ( state = "disable" )      l2l = Label ( ento , text = "Purnea-2" , width = 8 )      l2l . grid ( row = 0 , column = 1 )     e2l = Entry ( ento , textvariable = var2 , state = "disable" , width = 8 )     e2l . grid ( row = 1 , column = 1 )