error - tkinter label frame
tkinter ttk separator no se mostrarĂ¡ (2)
El separador tiene un ancho natural de 1 píxel. Le dijo que reservara el espacio en cinco columnas, pero no ha solicitado que el separador realmente llene esas cinco columnas. Para resolver esto, suministre el atributo sticky
, que dice "si hay más espacio del necesario para este widget, haga que los bordes del widget se" peguen "a lados específicos de su contenedor".
En este caso, desea que el separador se pegue a los bordes izquierdo y derecho de su contenedor. Los atributos adhesivos utilizan los puntos de la brújula para los valores, por lo que desea "e" para el este y "w" para el oeste:
ttk.Separator(...).grid(..., sticky="ew")
Considere este código simple:
from Tkinter import *
import ttk
root= Tk()
ttk.Label(root, text=''Heading Here'').grid(row=1, column=1)
ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5)
root.mainloop()
Cuando ejecuto este código, el separador es casi invisible.
Lo he marcado con una flecha roja, si puedes verlo como una especie de punto pequeño.
¿Cómo hago que el separador abarque todo el ancho horizontal, o al menos sea visible?
La solución sticky
@ Bryan está bien, pero solo resuelve parte del caso, ya que el separador no cubrirá todo el ancho horizontal (que usted solicitó). Aquí hay una solución alternativa que puede aplicar: en lugar de .grid()
, use el diseño de place()
y tenga el control total de la posición, el ancho (largo) e incluso la altura del separador. Para aplicar esto solo en el presente caso (sin ninguna característica adicional) y cubrir el ancho horizontal completo, solo:
Reemplazar
ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5)
con
ttk.Separator(root).place(x=0, y=26, relwidth=1)
Puedes configurar ''y'' como quieras. También tenga en cuenta que orient=HORIZONTAL
no es necesario ya que es la opción predeterminada. (Consulte http://effbot.org/tkinterbook/place.htm para obtener detalles y ejemplos del uso del diseño `.option () '').