Pregunta ¿Cómo detener la reducción de Tkinter Frame para que se ajuste a su contenido?


Este es el código que me está causando 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 comente las líneas con la etiqueta, el cuadro se muestra con el ancho correcto. Sin embargo, agregar la etiqueta parece reducir el marco hasta el tamaño de la etiqueta. ¿Hay alguna manera de evitar que eso suceda?


32
2018-02-19 03:21


origen


Respuestas:


Por defecto, tk frames reducir o crecer para adaptarse a sus contenidos, que es lo que quieres el 99% del tiempo. El término que describe esta característica es "propagación de geometría". Hay un mando activar o desactivar la propagación de geometría cuando se usa pack (y un similar para grid)

Como está utilizando el paquete, la sintaxis sería:

f.pack_propagate(0)

o tal vez root.pack_propagate(0), dependiendo de qué widget (s) realmente desea afectar.

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


46
2018-02-19 19:42