tkinter: à l'aide des barres de défilement sur une toile

Je suis en train de faire une toile de défilement. Cependant, une fois que j'ai essayer de mettre en place les barres de défilement pour travailler avec la toile, tkinter, semble totalement ignorer les dimensions j'ai d'abord fixé pour mon toile. J'ai essayé de mettre le tout dans un cadre, la définition de la toile pour remplir le cadre, puis le réglage de la taille de l'image, mais qui présente le même problème, sauf si j'ai mis l'image pour remplir la fenêtre, ce qui n'est pas ce que je veux. Fondamentalement, je veux une taille fixe en toile avec des barres de défilement sur elle. Mon code ressemble à ceci (en python 3.1):

from tkinter import *
root=Tk()
frame=Frame(root,width=300,height=300)
frame.grid(row=0,column=0)
canvas=Canvas(frame,bg='#FFFFFF',width=300,height=300,scrollregion=(0,0,500,500))
hbar=Scrollbar(canvas,orient=HORIZONTAL)
hbar.pack(side=BOTTOM,fill=X)
hbar.config(command=canvas.xview)
vbar=Scrollbar(canvas,orient=VERTICAL)
vbar.pack(side=RIGHT,fill=Y)
vbar.config(command=canvas.yview)
canvas.config(width=300,height=300)
canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set)
canvas.pack(side=LEFT,expand=True,fill=BOTH)

root.mainloop()