TKInter 字体的多种变体
Multiple variations of TKInter fonts
我正在努力更好地理解在 tkinter
和 ttk
中使用字体。
我的计划是有两种不同的标题样式,每种都有自己的字体大小。我使用 nametofont()
创建字体实例,然后以两种不同的样式设置大小:
labelFont = tkinter.font.nametofont('TkTextFont')
labelFont.config(weight='bold')
ttk.Style().configure("TLabel", font=labelFont, size=12)
ttk.Style().configure("heading.TLabel", font=labelFont, size=48)
然后将样式应用于标题:
heading = ttk.Label(root, text="Heading", style="heading.TLabel")
label = ttk.Label(root, text="Label", style="TLabel") # is style redundant?
不幸的是,我没有得到两种不同的尺寸,所以这显然是错误的方法。
我也试过这样的:
labelFont = tkinter.font.nametofont('TkTextFont')
headingFont = tkinter.font.nametofont('TkTextFont')
# etc
以为我会得到两个独立的字体实例,但它们似乎是同一个实例。如果它们是独立的,我可以使用 configure()
给它们每个人自己的字体大小。
我采用这种方法是因为我想使用built-in命名字体,并使用变量来保持一致性。正确的做法是什么?
您需要在 Font
的不同实例上使用 .config(size=...)
:
labelFont = tkinter.font.nametofont('TkTextFont')
labelFont.config(weight='bold', size=12)
# create a clone of labelFont using Font.copy()
headingFont = labelFont.copy()
headingFont.config(size=48)
s = ttk.Style()
s.configure('TLabel', font=labelFont) # apply to all instance of ttk.Label
s.configure('heading.TLabel', font=headingFont, size=96)
heading = ttk.Label(root, text='Heading', style='heading.TLabel')
label = ttk.Label(root, text='Label') # style='TLabel' is not necessary
我正在努力更好地理解在 tkinter
和 ttk
中使用字体。
我的计划是有两种不同的标题样式,每种都有自己的字体大小。我使用 nametofont()
创建字体实例,然后以两种不同的样式设置大小:
labelFont = tkinter.font.nametofont('TkTextFont')
labelFont.config(weight='bold')
ttk.Style().configure("TLabel", font=labelFont, size=12)
ttk.Style().configure("heading.TLabel", font=labelFont, size=48)
然后将样式应用于标题:
heading = ttk.Label(root, text="Heading", style="heading.TLabel")
label = ttk.Label(root, text="Label", style="TLabel") # is style redundant?
不幸的是,我没有得到两种不同的尺寸,所以这显然是错误的方法。
我也试过这样的:
labelFont = tkinter.font.nametofont('TkTextFont')
headingFont = tkinter.font.nametofont('TkTextFont')
# etc
以为我会得到两个独立的字体实例,但它们似乎是同一个实例。如果它们是独立的,我可以使用 configure()
给它们每个人自己的字体大小。
我采用这种方法是因为我想使用built-in命名字体,并使用变量来保持一致性。正确的做法是什么?
您需要在 Font
的不同实例上使用 .config(size=...)
:
labelFont = tkinter.font.nametofont('TkTextFont')
labelFont.config(weight='bold', size=12)
# create a clone of labelFont using Font.copy()
headingFont = labelFont.copy()
headingFont.config(size=48)
s = ttk.Style()
s.configure('TLabel', font=labelFont) # apply to all instance of ttk.Label
s.configure('heading.TLabel', font=headingFont, size=96)
heading = ttk.Label(root, text='Heading', style='heading.TLabel')
label = ttk.Label(root, text='Label') # style='TLabel' is not necessary