Foros Python

Versión completa: Redimensionar los widget con el método grid.-
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola Francisco, hola gente, ¿cómo están?, yo lidiado aprendiendo
a posicionar los widget con el método grid.-
leo y releo tu blog, pero no puedo hacer que me funcione, ¿me podrías
orientar?, desde ya gracias...

PD:no sé si me explique lo suficiente, quiero que al agrandar/achicar
la ventana los widget acompañen las nuevas dimensiones

Código:
from tkinter import ttk
import tkinter as tk

def main():

    def datos():
        #print(boton.grid_info())
        #print(app.grid_size())
        print(app.grid_slaves(column=0))


    app = tk.Tk()
    app.title(" Posicionar con grid")
    app.geometry("500x300+300+300")

    mensaje = tk.Label(app, text="Nombre del cliente")
    mensaje.grid(row=0, column=0, padx=5 , pady=10)

    entrada = ttk.Entry(app, width=30)
    entrada.grid(row=0, column=1, columnspan=2)

    boton = ttk.Button(app, text="Información", command=datos)
    boton.grid(row=1, column=1, ipadx=12, ipady=12)


    app.mainloop()

if __name__ == '__main__':
    main()

Slds. Daniel ☕☕☕
Hola, Daniel, ¿cómo estás?

Una vez que ubicaste los controles en sus respectivas columnas y filas, tenés que indicar cuáles de ellas han de expandirse cuando se expanda la ventana y también cuáles de los controles han de expandirse. Lo primero se hace con las funciones rowconfigure() y columnconfigure(), lo segundo usando el argumento sticky. Por ejemplo, si queremos que la entrada se expanda horizontalmente, haríamos esto:

Código:
# Indicar que el control se expanda a la izquierda (w) y derecha (e).
entrada.grid(row=0, column=1, columnspan=2, sticky="we")
# Indicar que la columna donde se encuentra el control anterior
# también se expanda.
app.columnconfigure(1, weight=1)

El hecho de que sean dos las cosas que hay que configurar (tanto el widget como la columna y fila donde se encuentra) permite que haya múltiples controles en una misma columna pero con políticas de expansión diferentes (por ejemplo, que algunos se expandan y otros simplemente queden en el medio con un tamaño fijo).

Saludos
Hola Francisco, estoy muy bien y agradecido por tu posteo, muy esclarecedor.-
Ahora tengo otra duda, mientras esperaba tu respuesta(el inpaciente) segui
practicando y puse todos los widget en un frame y funciona a la perfección,
¿que diferencia hay entre las 2 maneras?.


Slds. Daniel ☕☕☕
Hola, Daniel.

Es lo mismo. Un frame simplemente permite agrupar un conjunto de controles que están relacionados entre sí: no tiene ningún impacto visual.

Saludos