Foros Python

Versión completa: Hacer que el widget frame acompañe la redimensión de la ventana 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?, creo que en largo enunciado está la consulta.
Lo que ocurre es que en la mayoría de videos/tutoriales desaconsejan mezclar los métodos
de posicionamiento y no logro con el método grid redimensionar el frame y la ventana
raíz conjuntamente.-

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

def main():

    root = tk.Tk()
    root.title(" Marco")
    root.geometry("+500+300")

    cuadro = tk.Frame(root, width=480, height=320, bd=10, relief="sunken")
    cuadro.pack(fill="both", expand=1)

    root.mainloop()

if __name__ == '__main__':
    main()



PD: En otro post hice una consulta similar y dije que había encontrado la solución poniendo
los widget en un marco lo que ocurre es que era con el método pack() y los botones con grid()

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

Debería ser así con grid():

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

root = tk.Tk()
root.title("Marco")
root.geometry("+500+300")
cuadro = tk.Frame(root, width=480, height=320, bd=10, relief="sunken")
cuadro.grid(column=0, row=0, sticky="nsew")
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
root.mainloop()

Las explicaciones de los métodos columnconfigure(), rowconfigure() y el argumento sticky están en este artículo: Posicionar elementos en Tcl/Tk (tkinter).

Saludos
Hola Francisco. Estoy muy bien, te dejo mi nuevo código para que
me digas si el botón también debería agrandarse/achicarse o sus
dimensiones siempre son estáticas.-
Otra cosita, tenía noción de columnconfigure(), rowconfigure() pero
creí que con ponerlo en el Frame bastaba, ¿tengo que poner los 2
métodos por cada fila/columna que cree?

Código:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk
from tkinter import ttk, font

def main():
    root = tk.Tk()
    root.title("Marco")
    root.geometry("+500+300")
    cuadro = tk.Frame(root, width=480, height=320, bd=5, relief="sunken")
    cuadro.grid(row=0, column=0, sticky="nsew")
    root.columnconfigure(0, weight=1)
    root.rowconfigure(0, weight=1)

    botonUno = ttk.Button(cuadro, text="Buscar")
    botonDos = ttk.Button(cuadro, text="Cerrar")

    botonUno.grid(row=0, column=0, ipady=10)
    botonDos.grid(row=0, column=1, ipady=10)

    cuadro.columnconfigure(0, weight=1)
    cuadro.rowconfigure(0, weight=1)
    cuadro.columnconfigure(1, weight=1)

    root.mainloop()

if __name__ == '__main__':
    main()


Que tengan todos un bello bello martes.
Slds. Daniel ☕☕☕
Hola, Daniel.

Si querés que los botones también se expandan en lugar de quedar en el centro, debés indicar en qué direcciones debe expandirse ("nsew" indica todas las direcciones) vía sticky:

Código:
botonUno.grid(row=0, column=0, ipady=10, sticky="nsew")
botonDos.grid(row=0, column=1, ipady=10, sticky="nsew")

En cuanto a column/rowconfigure(), sí, hay que especificarlo por cada columna y fila creada (en caso de que queramos que se expanda).

Saludos
Hola Francisco, muy buen día, gracias gracias ahora si todo
funciona como lo esperado, gracias...

Slds. Daniel ☕☕☕