Pregunta

El tamaño de las ventanas Tkinter puede ser controlado a través de los métodos siguientes:

.minsize()
.maxsize()
.resizable()

¿Hay formas equivalentes para controlar el tamaño de Tkinter o TTK Marcos?

@Bryan: He cambiado el código de frame1.pack a lo siguiente:

frame1.pack(fill='both', expand=True)
frame1.bind( '<Configure>', maxsize )

Y añadí este controlador de eventos:

# attempt to prevent frame from growing past a certain size
def maxsize( event=None ):
    print frame1.winfo_width()
    if frame1.winfo_width() > 200:
        print 'frame1 wider than 200 pixels'
        frame1.pack_propagate(0)
        frame1.config( width=200 )
        return 'break'

Las anteriores detecta controlador de eventos que la anchura de un marco es demasiado grande, pero es incapaz de evitar el aumento de tamaño del suceso. ¿Es esta una limitación de Tkinter o he entendido mal su explicación?

¿Fue útil?

Solución

No hay una función de magia única para forzar un marco a un tamaño mínimo o fijo. Sin embargo, ciertamente puede forzar el tamaño de un marco, dando al marco de una anchura y altura. A continuación, tiene que hacer potencialmente dos más cosas: cuando se pone esta ventana en un contenedor que necesita para asegurarse de que el gestor de la geometría no pueden contraer o expandir la ventana. Dos, si el marco es un contenedor para otro control, rejilla a su vez o propagación paquete de modo que el marco no se encoge o ampliar para adaptarse a sus propios contenidos.

Tenga en cuenta, sin embargo, que esto no impedirá que se pueda cambiar el tamaño de una ventana a ser más pequeño que un marco interno. En ese caso sólo será recortada del marco.

import Tkinter as tk

root = tk.Tk()
frame1 = tk.Frame(root, width=100, height=100, background="bisque")
frame2 = tk.Frame(root, width=50, height = 50, background="#b22222")

frame1.pack(fill=None, expand=False)
frame2.place(relx=.5, rely=.5, anchor="c")

root.mainloop()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top