在python tkinter中设置Checkbutton或Labelframe的样式

Set style for Checkbutton or Labelframe in python tkinter

我已经使用python tkinter设计了一个GUI。 现在我想为Checkbutton和Labelframe设置样式,例如字体,颜色.etc
我已经阅读了有关tkinter样式主题的一些答案,并且使用以下方法为Checkbutton和Labelframe设置样式。
但是它们实际上不起作用。

1
2
3
4
Root = tkinter.Tk()
ttk.Style().configure('Font.TLabelframe', font="15", foreground ="red")
LabelFrame = ttk.Labelframe(Root, text ="Test", style ="Font.TLabelframe")
LabelFrame .pack( anchor ="w", ipadx = 10, ipady = 5, padx = 10, pady = 0, side ="top")

您能告诉我原因,还是您有其他有效方法? 非常感谢你!


您需要配置标签子组件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from tkinter import *
from tkinter import ttk

root = Tk()

s = ttk.Style()

s.configure('Red.TLabelframe.Label', font=('courier', 15, 'bold'))
s.configure('Red.TLabelframe.Label', foreground ='red')
s.configure('Red.TLabelframe.Label', background='blue')
lf = ttk.LabelFrame(root, text ="Test", style ="Red.TLabelframe")
lf.pack( anchor ="w", ipadx = 10, ipady = 5, padx = 10,
                  pady = 0, side ="top")
Frame(lf, width=100, height=100, bg='black').pack()
print(s.lookup('Red.TLabelframe.Label', 'font'))
root.mainloop()


当我想简单地更改ttk.LabelFrame字体的粗细(如果按照建议的方式进行操作,最终会放错位置的标签)时,公认的答案并没有真正帮助我,我将提供适用的方法 我。

您必须使用ttk.LabelFramelabelwidget选项参数,首先准备一个单独的ttk.Label,并对其进行相应的样式设置。 重要提示:使用labelwidget意味着您无需为ttk.LabelFrame使用常规的text选项参数(只需在标签中进行操作即可)。

1
2
3
4
5
6
# changing a labelframe font's weight to bold
root = Tk()
style = ttk.Style()
style.configure("Bold.TLabel", font=("TkDefaultFont", 9,"bold"))
label = ttk.Label(text="Foo", style="Bold.TLabel")
lf = ttk.LabelFrame(root, labelwidget=label)