El fondo y el borde de borde “TNotebook.Tab” del estilo ttk no funcionan

He estado jugando con TKinter intentando crear una ventana de varias tabs.

Cuando bash TNotebook.Tab el TNotebook.Tab , ignora las opciones de background y de borderwidth , pero reconoce el foreground . ¿Qué estoy haciendo mal?

Aquí está la parte relevante del código:

 COLOR_1 = 'black' COLOR_2 = 'white' COLOR_3 = 'red' COLOR_4 = '#2E2E2E' COLOR_5 = '#8A4B08' COLOR_6 = '#DF7401' #Notebook Style noteStyler = ttk.Style() noteStyler.configure("TNotebook", background=COLOR_1, borderwidth=0) noteStyler.configure("TNotebook.Tab", background=COLOR_1, foreground=COLOR_3, lightcolor=COLOR_6, borderwidth=0) noteStyler.configure("TFrame", background=COLOR_1, foreground=COLOR_2, borderwidth=0) #Create Notebook and Tabs note = ttk.Notebook(gui, style='TNotebook') myTab = ttk.Frame(note, style='TFrame') note.add(myTab, text = 'MyTab', compound=tk.TOP) note.pack(anchor=tk.W) 

Aquí hay una imagen de cómo se ve la ventana:

introduzca la descripción de la imagen aquí

En caso de que importe, estoy ejecutando python 2.7 en Windows 7 de 64 bits.

El objective del soporte de temática ttk es obtener el motor de tematización proporcionado por el sistema para dibujar los diversos elementos que conforman un widget Tk para que coincidamos con el aspecto y la sensación de la interfaz de usuario actual. En el caso de la pestaña Notebook en Windows Vista o superior, eso significa que el motor ‘vsapi’ se está utilizando para dibujar los elementos. La pestaña es un elemento y su aspecto lo proporciona el tema de Windows. Por esta razón, no proporciona ninguna forma de modificar el fondo, ya que se realiza seleccionando un tema de Windows alternativo.

Sin embargo, lo que puede hacer es seleccionar un elemento de un tema ttk diferente que admita cambiar el estilo de fondo. Es posible que esto no coincida estrechamente de otras formas, pero ya se está separando del tema proporcionado por el sistema. La forma de controlar completamente el aspecto de su elemento es crear un nuevo elemento utilizando el motor de “imagen” y proporcionar imágenes para pintar el elemento. Un método más simple es tomar prestado un elemento de uno de los otros temas. El tema ‘predeterminado’ brinda soporte para especificar el color del elemento de la pestaña, de modo que podamos tomarlo prestado al recrear el elemento y redefinir el diseño de TNotebook para usar el nuevo elemento.

 # Import the Notebook.tab element from the default theme noteStyler.element_create('Plain.Notebook.tab', "from", 'default') # Redefine the TNotebook Tab layout to use the new element noteStyler.layout("TNotebook.Tab", [('Plain.Notebook.tab', {'children': [('Notebook.padding', {'side': 'top', 'children': [('Notebook.focus', {'side': 'top', 'children': [('Notebook.label', {'side': 'top', 'sticky': ''})], 'sticky': 'nswe'})], 'sticky': 'nswe'})], 'sticky': 'nswe'})]) noteStyler.configure("TNotebook", background=COLOR_1, borderwidth=0) noteStyler.configure("TNotebook.Tab", background="green", foreground=COLOR_3, lightcolor=COLOR_6, borderwidth=2) noteStyler.configure("TFrame", background=COLOR_1, foreground=COLOR_2, borderwidth=0) 

Las opciones disponibles dependen del motor de temática en uso en cierta medida y el tema de Windows es más restrictivo que la mayoría porque el dibujo de los elementos se entrega a un tercero. La personalización extrema es posible pero requiere la redefinición del diseño del widget. Esto se menciona en los documentos ttk de python, pero a menos que sepa algo sobre cómo están diseñados los widgets ttk, no es tan obvio qué hacer. La intención del diseño es que no realice una personalización tan extrema, sino que haga que su aplicación se ajuste a la apariencia y sensación de la plataforma seleccionada por los usuarios. Pero las herramientas están disponibles, simplemente enterradas bastante profundamente. Aquí hay otro enlace a un ejemplo de Tcl que agrega botones de cierre a las tabs