¿Cómo evitar que Tkinter Frame se encoja para que se ajuste a su contenido?

Este es el código que me está dando problemas.

f = Frame(root, width=1000, bg="blue") f.pack(fill=X, expand=True) l = Label(f, text="hi", width=10, bg="red", fg="white") l.pack() 

Si comento las líneas con la etiqueta, el marco se muestra con el ancho correcto. Sin embargo, agregar la etiqueta parece reducir el marco al tamaño de la etiqueta. ¿Hay alguna manera de evitar que eso suceda?

Related of "¿Cómo evitar que Tkinter Frame se encoja para que se ajuste a su contenido?"

De forma predeterminada, los marcos tk se reducen o aumentan para adaptarse a su contenido , que es lo que desea el 99% del tiempo. El término que describe esta característica es “propagación de geometría”. Hay un comando para activar o desactivar la propagación de la geometría cuando se utiliza el pack (y uno similar para la grid ).

Ya que estás usando el paquete, la syntax sería:

 f.pack_propagate(0) 

o tal vez root.pack_propagate(0) , dependiendo de qué widget (s) realmente desea afectar. Sin embargo, debido a que no le ha dado la altura del marco, su altura predeterminada es de 1 píxel, por lo que es posible que aún no vea los widgets interiores. Para obtener el efecto completo de lo que desea, debe darle al marco que contiene un ancho y una altura.

Dicho esto, la gran mayoría de las veces debería dejar que tkinter calcule el tamaño. Cuando desactiva la propagación de la geometría, la GUI no responde bien a los cambios de resolución, cambios de fonts, etc. Los administradores de geometría de tkinter ( pack , place y grid ) son notablemente poderosos. Aprende a aprovechar ese poder.