Separador Pykon Tkinter TTK con etiqueta

Estoy tratando de crear un widget personalizado que incluya un separador detrás de una etiqueta. Me gustaría que el separador se extienda detrás de la etiqueta a cada lado de la ventana (usando la cuadrícula). Intenté crear esto yo mismo, pero no pude hacer que el separador se pegara a los bordes.

import tkinter as tk from tkinter import ttk class LabelSeparator (tk.Frame): def __init__ (self, parent, text = "", width = "", *args): tk.Frame.__init__ (self, parent, *args) self.separator = ttk.Separator (self, orient = tk.HORIZONTAL) self.separator.grid (row = 0, column = 0, sticky = "ew") self.label = ttk.Label (self, text = text) self.label.grid (row = 0, column = 0, padx = width) if __name__ == "__main__": root = tk.Tk () root.geometry ("200x40") label = LabelSeparator (root, text = "Label", width = 15) label.grid (sticky = "ew") label2 = LabelSeparator (root, text = "A Second Label", width = 15) label2.grid (sticky = "ew") root.mainloop () 

Separador con etiqueta

La única forma que encontré para expandir el separador fue boost el padx en la etiqueta, pero eso realmente no soluciona el problema.

Debo mencionar que soy muy nuevo en la creación de widgets personalizados.

El único problema con su código es que no ha llamado a grid_columnconfigure para decirle a tkinter qué hacer con espacio adicional. Como no le dijiste al marco interno qué hacer con espacio adicional, lo dejó en blanco. Cuando el widget se coloca en su elemento primario y se expande, sus widgets internos no estaban usando el espacio adicional.

Agregue lo siguiente en su __init__ :

 self.grid_columnconfigure(0, weight=1) 

Como regla general, siempre debe establecer el peso de al menos una fila y una columna en una matriz que utiliza la cuadrícula para gestionar sus hijas.