Comment puis-je changer l'étiquette d'en-tête bleue de ttk.LabelFrame en noire dans tkinter 8.5 de Python

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

  •  20-12-2019
  •  | 
  •  

Question

J'utilise tkinter 8.5 et python 3.3 sur une machine Windows 7.

Le code ci-dessous affiche l'en-tête du Labelframe dans une couleur de police bleue.

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()

J'ai essayé de résoudre ce problème en ajoutant un ttk.Style(), mais j'ai obtenu un affichage inattendu :

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-t-il un moyen de faire apparaître un en-tête ttk.LabelFrame en noir sans effets secondaires étranges ?

Était-ce utile?

La solution

Il semble que Windows par défaut les en-teurs TTK.Labelframe sur cette couleur bleue.Je ne sais pas pourquoi.

Mac et Linux par défaut à Black, tandis que Windows par défaut sur bleu.

J'ai trouvé une solution en créant un ttk.label et en passant cela comme l'argument de labelWidget de TTK.Labelframe.Cela pourrait être plus d'une solution de contournement, cependant.En tout état de cause, le code ci-dessous affiche le texte d'en-tête en noir sur ma machine Windows 7.

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()

Autres conseils

Cela peut également être modifié en utilisant la propriété de premier plan tk.LabelFrame(window, foreground='red')

Il vous suffit de supprimer le style='TLabelframe.Label' du ttk.LabelFrame choix.

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()

J'utilise Python 3.7.3 et tkinter 8.6.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top