Curso de TKINTER desde cero

Diferencias entre el método grid() y pack() de Tkinter

Capítulo 3: El método grid()

En el capítulo anterior ya vimos cómo añadir widgets, en concreto el widget de marco, Frame(). En este verás las diferencias entre los métodos pack() y grid(), los cuales, nos sirven para posicionar los elementos en las ventanas y marcos.

Label() de Tkinter con pack()

Empecemos escribiendo una etiqueta Label(). La cual, vimos en el capítulo 1. Por si no recuerdas cual era su propósito, esta etiqueta nos sirve para añadir una etiqueta de texto en la ventana o en un marco.

from tkinter import *
root = Tk()

# Dibuja un marco en la ventana
marco_principal = Frame()

#Etiqueta (Muestra un texto)
texto = Label(root, text="Capítulo 3 del curso Tkinter.")
texto.pack()

marco_principal.config(width=200, height=200, bg="red")
marco_principal.pack()

root.mainloop()

El método pack() de Tkinter

El método pack() de Tkinter se ejecuta según el flujo de ejecución de Python, el pack() que lea primero se muestra arriba en la ventana.

Este es el resultado:

Ventana con Label y Frame

Si cambiamos este orden, el texto aparecerá debajo y el Frame() rojo arriba (te he marcado la parte del código que he cambiado de posición):

from tkinter import *
root = Tk()

# Dibuja un marco en la ventana
marco_principal = Frame()

#Etiqueta (Muestra un texto)
texto = Label(root, text="Capítulo 3 del curso Tkinter.")

marco_principal.config(width=200, height=200, bg="red")
marco_principal.pack()

texto.pack()

root.mainloop()

Esta vez, la etiqueta, aparece debajo:

Ventana con Label y Frame

El método grid() de Tkinter

Entramos en algo muy interesante de Tkinter, el método grid(), el cuál es capaz de mostrar los elementos de un programa en forma de tabla bidimensional, es decir, podemos colocar las cosas por columnas y filas y olvidarnos del orden en el flujo de ejecución.

Bien, ¿pero cómo especificamos estas columnas y filas?
Con números de posición, así de fácil.

Ahora, vamos a sustituir los pack() por grid(), que en este caso, grid() también permite mostrar los widgets y además de eso, posicionarlos de una forma muy intuitiva.

Veamos algún ejemplo de colocación:

marco_principal.grid(row=1,column=0)

texto.grid(row=0,column=0)
Ventana con Label y Frame
marco_principal.grid(row=0,column=0)

texto.grid(row=0,column=1)
Ventana con Label y Frame

En el vídeo tienes algún ejemplo más y por supuesto, vamos a seguir utilizando grid() y pack() a lo largo del curso.

Comentarios

Si te quedan dudas sobre el temario, sobre Tkinter, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.