Come posso cambiare l'etichetta di intestazione blu di TTK.LabelFrame in nero a Python's Tkkinter 8.5

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

  •  20-12-2019
  •  | 
  •  

Domanda

Sto usando Tkinter 8.5 e Python 3.3 su una macchina Windows 7.

Il codice qui sotto rende l'intestazione della Labelframe in un colore del carattere blu.

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

Ho provato a fissare questo aggiungendo un TTK.Style (), ma ha ottenuto un display inaspettato:

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

C'è un modo per ottenere un'intestazione TTK.LabelFrame per apparire Nero a colori senza effetti collaterali strani?

È stato utile?

Soluzione

Sembra che Windows default TTK.LabelFrame intestazioni a questo colore blu.Non sono sicuro del perché.

Mac e linux predefinito per il nero, mentre Windows è predefinito in blu.

Ho trovato una soluzione creando un TTK.Label e passando quello come argomento LabelWidget di TTK.LabelFrame.Questo potrebbe essere più di una soluzione alternativa, però.In qualsiasi evento, il codice qui sotto visualizza il testo dell'intestazione in nero sulla mia macchina 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()
.

Altri suggerimenti

Questo può anche essere modificato utilizzando la proprietà in primo piano tk.LabelFrame(window, foreground='red')

Hai solo bisogno di rimuovere il style='TLabelframe.Label' dalle opzioni ttk.LabelFrame.

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

Sto usando Python 3.7.3 e Tkinter 8.6.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top