Python Treeview scrollbar Python Treeview scrollbar tkinter tkinter

Python Treeview scrollbar


You have to place() your scrollbar in window.

from tkinter import ttkimport tkinter as tkwin = tk.Tk()win.minsize(width=300, height=400)win.resizable(width=0, height=0)tree = ttk.Treeview(win, selectmode='browse')tree.place(x=30, y=95)vsb = ttk.Scrollbar(win, orient="vertical", command=tree.yview)vsb.place(x=30+200+2, y=95, height=200+20)tree.configure(yscrollcommand=vsb.set)tree["columns"] = ("1", "2")tree['show'] = 'headings'tree.column("1", width=100, anchor='c')tree.column("2", width=100, anchor='c')tree.heading("1", text="Account")tree.heading("2", text="Type")tree.insert("",'end',text="L1",values=("Big1","Best"))tree.insert("",'end',text="L2",values=("Big2","Best"))tree.insert("",'end',text="L3",values=("Big3","Best"))tree.insert("",'end',text="L4",values=("Big4","Best"))tree.insert("",'end',text="L5",values=("Big5","Best"))tree.insert("",'end',text="L6",values=("Big6","Best"))tree.insert("",'end',text="L7",values=("Big7","Best"))tree.insert("",'end',text="L8",values=("Big8","Best"))tree.insert("",'end',text="L9",values=("Big9","Best"))tree.insert("",'end',text="L10",values=("Big10","Best"))tree.insert("",'end',text="L11",values=("Big11","Best"))tree.insert("",'end',text="L12",values=("Big12","Best"))win.mainloop()

enter image description here

But place() needs manual calculations of x and y. It is easier to use pack()

from tkinter import ttkimport tkinter as tkwin = tk.Tk()win.resizable(width=0, height=0)tree = ttk.Treeview(win, selectmode='browse')tree.pack(side='left')vsb = ttk.Scrollbar(win, orient="vertical", command=tree.yview)vsb.pack(side='right', fill='y')tree.configure(yscrollcommand=vsb.set)tree["columns"] = ("1", "2")tree['show'] = 'headings'tree.column("1", width=100, anchor='c')tree.column("2", width=100, anchor='c')tree.heading("1", text="Account")tree.heading("2", text="Type")tree.insert("",'end',text="L1",values=("Big1","Best"))tree.insert("",'end',text="L2",values=("Big2","Best"))tree.insert("",'end',text="L3",values=("Big3","Best"))tree.insert("",'end',text="L4",values=("Big4","Best"))tree.insert("",'end',text="L5",values=("Big5","Best"))tree.insert("",'end',text="L6",values=("Big6","Best"))tree.insert("",'end',text="L7",values=("Big7","Best"))tree.insert("",'end',text="L8",values=("Big8","Best"))tree.insert("",'end',text="L9",values=("Big9","Best"))tree.insert("",'end',text="L10",values=("Big10","Best"))tree.insert("",'end',text="L11",values=("Big11","Best"))tree.insert("",'end',text="L12",values=("Big12","Best"))win.mainloop()

enter image description here

You can always put Treeview and Scrollbar in Frame and then move this frame with place(), pack() or grid() in better place.


After creating your widgets, you need to place or lay out your widgets on the Tk window. The Layout Manager available in tkinter are grid, pack and place. Check them out and add them to your widgets.


import tkinter as tkfrom tkinter.ttk import Treeview, Scrollbartop = tk.Tk()top.geometry('1400x800')top.configure(background="#f7f7f7")# treeview initializationtreeview = Treeview(top)# scrollbarsvsb = Scrollbar(top, orient="vertical", command=treeview.yview)vsb.place(relx=0.978, rely=0.175, relheight=0.713, relwidth=0.020)hsb = Scrollbar(top, orient="horizontal", command=treeview.xview)hsb.place(relx=0.014, rely=0.875, relheight=0.020, relwidth=0.965)treeview.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)

May be this can help you.