Estoy intentando hacer un lienzo desplazable. Sin embargo, una vez que intento configurar las barras de desplazamiento para trabajar con el lienzo, tkinter parece ignorar por completo las dimensiones que inicialmente configuré para mi lienzo. He intentado empaquetarlos todos en un marco, configurar el lienzo para llenar el marco y luego establecer el tamaño del marco, pero eso presenta el mismo problema a menos que establezca el marco para llenar la ventana también, que no es lo que quiero . Básicamente, quiero un lienzo de tamaño fijo con barras de desplazamiento en él. Mi código actual es el siguiente (en Python 3.1):python y tkinter: utilizando barras de desplazamiento en un lienzo
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()
¿Por qué debemos empacar el lienzo por última vez? Me di cuenta de que cuando empaqué el lienzo antes de que cualquiera de las barras de desplazamiento termine solapando la barra de desplazamiento horizontal, comencé a usar tkinter, pero pensé que ese paquete no se superpondría. Gracias – Lanfear
Y el núcleo es 'scrollregion = (0,0,500,500)', ¡sin eso el todo no puede funcionar! – Turtle