Barra de desplazamiento Tkinter para marco

Mi objetivo es agregar una barra de desplazamiento vertical a un marco que tenga varias etiquetas. La barra de desplazamiento debería habilitarse automáticamente tan pronto como las etiquetas dentro del marco excedan la altura del marco. Después de buscar a través, encontréesta post útil Basado en ese post, entiendo que para lograr lo que quiero (corríjame si estoy equivocado, soy un principiante), tengo que crear unFrame primero, luego crea unCanvas Dentro de ese marco y pega la barra de desplazamiento a ese marco también. Después de eso, crea otro marco y colócalo dentro del lienzo como un objeto de ventana. Entonces, finalmente se me ocurre esto:

from Tkinter import *

def data():
    for i in range(50):
       Label(frame,text=i).grid(row=i,column=0)
       Label(frame,text="my text"+str(i)).grid(row=i,column=1)
       Label(frame,text="..........").grid(row=i,column=2)

def myfunction(event):
    canvas.configure(scrollregion=canvas.bbox("all"),width=200,height=200)

root=Tk()
sizex = 800
sizey = 600
posx  = 100
posy  = 100
root.wm_geometry("%dx%d+%d+%d" % (sizex, sizey, posx, posy))

myframe=Frame(root,relief=GROOVE,width=50,height=100,bd=1)
myframe.place(x=10,y=10)

canvas=Canvas(myframe)
frame=Frame(canvas)
myscrollbar=Scrollbar(myframe,orient="vertical",command=canvas.yview)
canvas.configure(yscrollcommand=myscrollbar.set)

myscrollbar.pack(side="right",fill="y")
canvas.pack(side="left")
canvas.create_window((0,0),window=frame,anchor='nw')
frame.bind("<Configure>",myfunction)
data()
root.mainloop()
¿Lo estoy haciendo bien? ¿Hay alguna forma mejor / más inteligente de lograr la salida que me dio este código?¿Por qué debo usar el método de cuadrícula? (Intenté colocar el método, pero ninguna de las etiquetas aparece en el lienzo).¿Qué tan especial acerca de usaranchor='nw' ¿Al crear ventana sobre lienzo?

Por favor, mantenga su respuesta simple, ya que soy un principiante.

Respuestas a la pregunta(4)

Su respuesta a la pregunta