Saltar a contenido
 No os perd谩is mi futuro contenido, seguidme en y Youtube 馃榿

Widget Frame (Marco)

Los Frames son marcos contenedores de otros widgets. Pueden tener tama帽o propio y posicionarse en distintos lugares de otro contenedor (ya sea la ra铆z u otro marco):

Note

from tkinter import *
root = Tk()

# Hijo de root, no ocurre nada
frame = Frame(root)  

# Empaqueta el frame en la ra铆z
frame.pack()      

# Como no tenemos ning煤n elemento dentro del frame, 
# no tiene tama帽o y aparece ocupando lo m铆nimo posible, 0*0 px

# Color de fondo, background
frame.config(bg="lightblue")     

# Podemos establecer un tama帽o,
# la ra铆z se adapta al frame que contiene
frame.config(width=480,height=320) 

root.mainloop()       

Tambi茅n podemos a帽adir la configuraci贸n al crear el frame:

Note

Frame(root, width=480,height=320) 

Algo interesante de los frames es que permiten par谩metros visuales utilizando atributos est谩ndar:

Note

frame.config(cursor="")         # Tipo de cursor
frame.config(relief="sunken")   # relieve del frame hundido
frame.config(bd=25)             # tama帽o del borde en p铆xeles

Pero esto no es algo 煤nico de los Frames, todos los widgets aceptan estos par谩metros visuales, incluso la ra铆z:

Note

root.config(bg="blue")          # color de fondo, background
root.config(cursor="pirate")    # tipo de cursor (arrow defecto)
root.config(relief="sunken")    # relieve del root 
root.config(bd=25)              # tama帽o del borde en p铆xeles

De esta forma pod茅is apreciar como se diferencia claramente el espacio de la ra铆z y el frame.

Sin embargo, fijaros que curiosamente si hacemos la ventana grande, el frame se encuentra centrado arriba al medio, eso es porque el m茅todo pack alinea el widget arriba al medio.Esta posici贸n se conoce como la distribuci贸n del Widget y podemos cambiarla de dos formas posibles justo al empacar el frame. Con alineaci贸n [arriba, abajo, izquierda, derecha] o con anclaje [N,S,E,W,NE鈥:

Note

frame.pack(side=RIGHT)   # a la derecha al medio
frame.pack(anchor=SE)    # sudeste, abajo a la derecha

Y no s贸lo eso, tambi茅n podemos redimensionar un widget:

Note

frame.pack(fill="x")                # ancho como el padre
frame.pack(fill="y")                # alto como el padre
frame.pack(fill="both")             # ambas opciones
frame.pack(fill="both", expand=1)   # expandirse para ocupar el espacio

C贸digo final:

Note

from tkinter import *

# Configuraci贸n de la ra铆z
root = Tk()
root.title("Hola mundo")
root.resizable(1,1)
root.iconbitmap('hola.ico')

frame = Frame(root, width=480, height=320)
frame.pack(fill='both', expand=1)
frame.config(cursor="pirate")
frame.config(bg="lightblue")
frame.config(bd=25)
frame.config(relief="sunken")

root.config(cursor="arrow")
root.config(bg="blue")
root.config(bd=15)
root.config(relief="ridge")

# Finalmente bucle de la aplicaci贸n
root.mainloop()

脷ltima edici贸n: 4 de Octubre de 2018