如何在Python的tkinter 8.5中将ttk.LabelFrame的蓝色标题更改为黑色
我在一台运行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的标题显示成黑色,而不会出现奇怪的副作用呢?
4 个回答
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
)
0
你只需要把 ttk.LabelFrame
选项中的 style='TLabelframe.Label'
去掉就可以了。
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
你也可以通过前景属性来改变这个,比如用 tk.LabelFrame(window, foreground='red')
这段代码,把文字颜色改成红色。
6
看起来在Windows系统中,ttk.Labelframe的标题默认是蓝色的。不太清楚为什么会这样。
我找到了一种解决办法,就是创建一个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()