Como posso alterar ttk.LabelFrame azul de cabeçalho de etiqueta para preto em python tkinter 8.5

StackOverflow https://stackoverflow.com//questions/25002373

  •  20-12-2019
  •  | 
  •  

Pergunta

Eu estou usando tkinter 8.5 e python 3.3 em uma máquina Windows 7.

O código abaixo compõe o Labelframe do cabeçalho de um azul cor do tipo de letra.

from tkinter import *
from tkinter import ttk

root = Tk()

lf = ttk.LabelFrame(root, text="Why is this blue?")
lf.pack()

label = ttk.Label(lf, text="label")
label.pack()

Eu tentei corrigir isso adicionando um ttk.De estilo(), mas tenho uma inesperada de exibição:

from tkinter import *
from tkinter import ttk

root = Tk()

s = ttk.Style()
s.configure('TLabelframe.Label', font='arial 14 bold')

lf = ttk.LabelFrame(root, text="Now it's black, but w/ a bizarre display"
                    " and no etched frame.", style='TLabelframe.Label')
lf.pack()

label = ttk.Label(lf, text="label")
label.pack()

Existe uma maneira de obter um ttk.LabelFrame cabeçalho para aparecer de cor negra w/o estranho efeitos secundários?

Foi útil?

Solução

Parece que os padrões do Windows ttk.Labelframe cabeçalhos para esta cor azul.Não sei por que.

Mac and Linux default to black, while Windows defaults to blue.

Eu encontrei uma solução através da criação de um ttk.Rótulo e, de passagem, que como ttk.Labelframe do labelwidget argumento.Este pode ser mais de uma solução, embora.Em qualquer caso, o código a seguir exibe o texto do cabeçalho em preto no meu Windows 7 máquina.

from tkinter import *
from tkinter import ttk

root = Tk()

l = ttk.Label(text="Not blue anymore")

lf = ttk.Labelframe(root, labelwidget=l)
lf.pack()

label = ttk.Label(lf, text="label")
label.pack()

root.mainloop()

Outras dicas

Isso também pode ser alterado usando a propriedade foreground tk.LabelFrame(window, foreground='red')

Você só precisa remover o style='TLabelframe.Label' do ttk.LabelFrame opções.

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

s = ttk.Style()
s.configure('TLabelframe.Label', font='arial 14 bold')

lf = ttk.LabelFrame(root, text="Now it's black, but w/ a bizarre display"
                    " and no etched frame.")
lf.pack()

label = ttk.Label(lf, text="label")
label.pack()
root.mainloop()

Eu estou usando Python 3.7.3 e tkinter 8.6.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top