Agregar etiqueta a marco en Tkinter ignora los atributos de marco

He creado un marco de tamaño fijo y ahora quiero agregar algunas tags y otros widgets en él. Pero observé que tan pronto como agrego un nuevo widget en este marco, no se respetan sus atributos, es decir, no se respetan el tamaño y el conjunto de colores de fondo predeterminado.

from Tkinter import * tk = Tk() page1 = Frame(tk, bg="blue", width=100, height=200) l1 = Label(page1, text='This is label 1') page1.pack() l1.pack() tk.mainloop() 

Entonces, en el ejemplo anterior, si comento las líneas 4 y 6, entonces puedo ver un marco de tamaño fijo con color de fondo azul. Mi requisito es que quiero agregar algunos otros widgets en este marco con este color.

Usted tiene razón sobre el ancho y la altura que no se respetan, pero no sobre el color de fondo. El color de fondo no se ve afectado, pero no puede ver el fondo porque el fondo se ajusta con precisión alrededor de la etiqueta. Si agrega relleno a la etiqueta cuando lo empaca, verá el fondo.

En cuanto al ancho y la altura … esta es una de las grandes características de Tkinter. De forma predeterminada, un widget contenedor se expande o se colapsa para que sea lo suficientemente grande como para contener su contenido. Por lo tanto, cuando se llama pack , hace que el marco se contraiga. Esta característica se llama propagación de la geometría .

Para la gran mayoría de las aplicaciones, este es el comportamiento que desea. Para las raras ocasiones en las que desea establecer explícitamente el tamaño de un contenedor, puede desactivar esta función. Para desactivarlo, llame a pack_propagate o grid_propagate en el contenedor (dependiendo de si está utilizando la cuadrícula o el paquete en ese contenedor), dándole un valor de False .

Usando tu código como ejemplo, harías:

 page1.pack_propagate(False) 

Mi recomendación es no hacer eso, y en su lugar aprender a trabajar con la propagación de geometría. Hará que sus GUI se comporten mejor cuando el usuario cambie el tamaño de las ventanas, y no pasará tiempo tratando de calcular el tamaño correcto para una ventana. Deja que Tkinter haga eso por ti.