scrollable canvas tkinter code example

Example: scrollable canvas in Tkinter

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
container = ttk.Frame(root)
canvas = tk.Canvas(container)
#create canvas in the container frame
scrollbar = ttk.Scrollbar(container, orient="vertical", command=canvas.yview)
#create scrollbar in container frame
scrollable_frame = ttk.Frame(canvas)
#define the scrollable frame in canvas 

scrollable_frame.bind(
    "<Configure>",
    lambda e: canvas.configure(
        scrollregion=canvas.bbox("all")
    )
)

canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")
#this is due that methods: pack(), place() and grid() can't be used for scrollbars
#so a windows containing scrollable_frame is created in canvas 

canvas.configure(yscrollcommand=scrollbar.set)


for i in range(50):
    ttk.Label(scrollable_frame, text="Sample scrolling label").pack()

container.pack()
canvas.pack(side="left", fill="both", expand=True)
scrollbar.pack(side="right", fill="y")

root.mainloop()