7

我使用 python tkinter 设计了一个 GUI。现在我想为 Checkbutton 和 Labelframe 设置样式,例如字体、颜色等。我已经阅读了一些关于 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")

您能告诉我原因吗,或者您还有其他有效的方法吗?非常感谢!

4

3 回答 3

14

您需要配置 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()
于 2013-09-17T03:52:24.883 回答
6

由于当我想做一个简单的ttk.LabelFrame字体粗细更改时,接受的答案并没有真正帮助我(如果你按照推荐的那样做,你最终会得到一个放错位置的标签),我会提供对我有用的东西。

您必须使用labelwidget选项参数首先准备一个您之前相应样式ttk.LabelFrame的单独文件。重要提示: using意味着您不使用通常的选项参数(只需在标签中执行)。ttk.Labellabelwidgettextttk.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)
于 2018-02-05T12:26:09.000 回答
0

为了完整起见,我正在寻找如何更改 ttk.LabelFrame 的边框颜色样式(特别是颜色),最后发现它是如何工作的,所以想在搜索时遇到的帖子上发布。

我为我的 ttk 小部件创建全局样式,也有一些方法可以将其应用于单个小部件。

style = ttk.Style()
style.theme_create('style', parent='alt', 
                        settings = {'TLabelframe': {'configure': 
                                        {'background': 'black',
                                        'relief': 'solid', # has to be 'solid' to color 
                                        'bordercolor': 'orange',
                                        'borderwidth': 1}},
                                    'TLabelframe.Label': {'configure': 
                                        {'foreground': 'green',
                                        'background': 'black'}}})
style.theme_use('style')
于 2021-09-24T14:34:30.083 回答