如何在python的tkinter 8.5中将ttk.LabelFrame的蓝色标题标签更改为黑色

问题描述 投票:0回答:4

我在 Windows 7 计算机上使用 tkinter 8.5 和 python 3.3。

下面的代码以蓝色字体颜色呈现 Labelframe 的标题。

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

我尝试通过添加 ttk.Style() 来修复此问题,但出现意外的显示:

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

有没有办法让 ttk.LabelFrame 标头显示为黑色且没有奇怪的副作用?

python tkinter ttk
4个回答
6
投票

Windows 似乎默认 ttk.Labelframe 标题为这种蓝色。不知道为什么。

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

我通过创建 ttk.Label 并将其作为 ttk.Labelframe 的 labelwidget 参数传递来找到了解决方案。不过,这可能更像是一种解决方法。无论如何,下面的代码在我的 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()

0
投票

这也可以使用前台属性来更改

tk.LabelFrame(window, foreground='red')


0
投票

您只需从

style='TLabelframe.Label'
选项中删除
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()

我正在使用Python 3.7.3和tkinter 8.6。


0
投票

首先定义你的

ttk
风格:

frame_label = ttk.Style()
frame_label.configure('Frame.TLabel', 
                       foreground = "black", # fontcolor
                       font=("Sans-serif",11)
                       )

然后将其应用到您的框架文本,例如“为什么是蓝色的?”:

lbl = ttk.Label(text = "Why is this blue?", style='Frame.TLabel')
label_frame = ttk.LabelFrame(root,
                             labelwidget=lbl
                              )
© www.soinside.com 2019 - 2024. All rights reserved.