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

时间:2013-09-12 05:25:20

标签: python styles tkinter

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

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

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

2 个答案:

答案 0 :(得分:9)

您需要配置Label子组件:

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

答案 1 :(得分:0)

当我想要简单地改变ttk.LabelFrame字体的重量时(如​​果你按照推荐的那样做,你最终得到一个错位的标签),接受的答案并没有真正帮助我,我会提供适合我的方法。

您必须使用labelwidget ttk.LabelFrame选项参数,首先准备一个您之前相应设置的单独ttk.Label重要提示:使用labelwidget表示您不会为text使用通常的ttk.LabelFrame选项参数(只需在标签中执行此操作)。

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