Desplazamiento en Tkinter

Chema Cortes pych3m4 en gmail.com
Lun Sep 4 15:53:18 CEST 2006


El 4/09/06, Ekaitz Lizundia<elizundia en fitbak.com> escribió:

> tengo un problema. Hago un frame que ocupa mas que lo que muestra la
> pantalla por lo que se necesita una barra de desplazamiento vertical. ¿Eso
> como se hace? ¿para eso hay que utilizar canvas?? Agradeceria si puediras
> poner un ejemplo, lo mas simple, solo que aparezca el codigo de poder
> desplazarme en la pantalla hacia abajo.

Algunos widgets poseen el interface scrollbar: Listbox, Canvas, Text y
Entry. Para un frame genérico tendrás que implementar tu propio
interface, o sea, que cuando se pulse en la barra de scroll se
actualize el frame y, recíprocamente, cuando cambie el frame que se
actualize la barra de scroll.

Posiblemente, la forma más fácil sea usando un canvas como contenedor,
dibujándo los widgets dentro de él, como si fuera un gestor de
geometría, con la función 'create_window':

from Tkinter import *

root=Tk()

frame = Frame(root, bd=2, relief=SUNKEN)
frame.pack(fill=BOTH)

xscrollbar = Scrollbar(frame, orient=HORIZONTAL)
xscrollbar.grid(row=1, column=0, sticky=E+W)

yscrollbar = Scrollbar(frame)
yscrollbar.grid(row=0, column=1, sticky=N+S)

canvas = Canvas(frame, bd=0, scrollregion=(0, 0, 1000, 1000),
                xscrollcommand=xscrollbar.set,
                yscrollcommand=yscrollbar.set)

xscrollbar.config(command=canvas.xview)
yscrollbar.config(command=canvas.yview)

canvas.grid(row=0, column=0, sticky=N+S+E+W)

f=Frame(canvas)
f.pack()
Label(f,text="Etiqueta").pack()
Button(f,text="Hola").pack()

canvas.create_window(0,0,ancho=NW,window=f)

root.mainloop()




Más información sobre la lista de distribución Python-es