Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Hacer que el widget frame acompañe la redimensión de la ventana con el método grid.
#1
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 ☕☕☕
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#2
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
Responder
#3
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 ☕☕☕
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#4
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
Responder
#5
Hola Francisco, muy buen día, gracias gracias ahora si todo
funciona como lo esperado, gracias...

Slds. Daniel ☕☕☕
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)