Pregunta

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 hacia fuera las líneas con la etiqueta, las pantallas de marco con la anchura correcta. Sin embargo, la adición de la etiqueta parece reducir el tamaño del marco al tamaño de la etiqueta. ¿Hay una manera de evitar que esto ocurra?

¿Fue útil?

Solución

Por defecto, los marcos tk encogerse o crecer 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 geometría". Hay una comando para encender la propagación de la geometría o desactivar de usando pack (y un similares uno para grid).

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

f.pack_propagate(0)

o tal vez root.pack_propagate(0), dependiendo de qué widgets (s) en realidad se desea afectar. Sin embargo, debido a que no ha dado la altura del marco, que es la altura por defecto es de 1 píxel por lo que aún no puede ver los widgets de interiores. Para obtener el efecto completo de lo que quiere, lo que necesita para dar el marco que contiene tanto una anchura y una altura.

Una vez dicho esto, la gran mayoría de las veces se debe dejar que tkinter calcular el tamaño. Cuando se enciende la propagación de la geometría fuera de su interfaz gráfica de usuario no responde bien a los cambios en la resolución, los cambios en las fuentes, etc. Tkinter de gestores de geometría (pack, place y grid) son extraordinariamente poderosos. Aprender a tomar ventaja de ese poder.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top